8768 sujets

Développement web côté serveur, CMS

Pages :
Bonjour
Je développe sous DreamWeaver CS6 PHP 5.6 et Mysql un fichier d'adresses tout simple
Je suis hébergé chez 1 and 1
J'affiche un tableau regroupant tous les membres. A partir de là j'appelle une page "Modif-Adresses.php" contenant le formulaire de modification et par le bouton "submit" je reviens à ma page contenant le tableau
Les modifications ont bien été prises en compte donc tout va bien
Lorsque j'envoie mes fichiers sources sur le serveur 1and1 après clic sur le bouton submit le retour ne se fait pas mais les modifications sont bien réalisées


/*
$updateGoTo = "NEW-Tableau-Adresses.php";
if (isset($_SERVER['QUERY_STRING']))
{
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
*/
header("Location: NEW-Tableau-Adresses.php");
}



le 07-09-2016 16h20
Bonjour
Je viens d'essayer ce code


if ($_SERVER['SERVER_NAME'] == "localhost")
{
header("Location: NEW-Tableau-Adresses.php");
}
else
{
header("Location: /melimelo/LesSamoyault/Adresses-Samoyault/Page-Accueil/NEW-Tableau-Adresses.php");
}


que j'ai envoyé sur mon seveur
En local aucun problème, mais depuis le serveur toujours ce blocage
Merci d'avance pour une réponse
Salut,

Tu utilises Mysql ou PDO ?

Regarde avec ta version de Php ...

Smiley cligne
Modifié par Tintin75 (10 Sep 2016 - 15:11)
Bonjour
Merci pour votre réactivité
En local (sur mon ordi) j'ai MySql version 5.7.11 et Php version 5.6.19
Chez mon hébergeur (1 and 1) j'ai MySql 5.1 et Php version 5.6
Donc à mon avis en Php les versions sont identiques
Il faut savoir qu'avant la version 5 de Php (commandes mysql_....) je n'avais pas de difficultés avec mon hébergeur
Ce soucis de retour à la page qui appelle je ne l'ai que depuis Php version > 5 (commandes mysqli_...) et ce que du côté serveur
Je suis un autodidacte et je galère vraiment
Voulez-vous les sources de la page appelante, un tableau et de la page de modifications (UpDate)
J'oubliais de préciser que sur le serveur les modifications ou les insertions se font correctements
Merci d'avance
Bonjour Jean-Louis,

A la ligne
header("Location: /melimelo/LesSamoyault/Adresses-Samoyault/Page-Accueil/NEW-Tableau-Adresses.php");

As-tu essayé avec l'adresse complète (http://....) ?

A parte, n'oublie pas qu'après header(location:...); [voir note 1] il faille placer un exit car le script continue malgré la redirection.

Note 1 : signifie "attention il va il y avoir une redirection a faire quand t'auras fini de lire tout le script de ce fichier". Exit interrompt cette lecture et fait faire la redirection d'emblée.
Bonjour et merci pour les réponses
Ci-dessous et selon vos recommandations voilà le code pour redirection de ma page NEW-Modif-Adresses.php
Toujours le même problème
J'ai mis le php.ini local dans mon dossier chez 1 and 1 mais là j'ai eu doit à un message d'erreur
Je suis démoralisé d'autant plus que cela fonctionnait avant la version 5 de php

/*
# header généré par DreamWeaver CS6
		$updateGoTo = "NEW-Tableau-Adresses.php";
		if (isset($_SERVER['QUERY_STRING'])) 
		{
			$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
			$updateGoTo .= $_SERVER['QUERY_STRING'];
		}
		header(sprintf("Location: %s", $updateGoTo));
*/		

		if ($_SERVER['SERVER_NAME'] == "localhost")
		{
			header("Location: NEW-Tableau-Adresses.php");
		}
		else
		{
			header('Location:  http://www.jelofre.fr/LesSamoyault/Adresses-Samoyault/Page-Accueil/NEW-Tableau-Adresses.php');  
			exit() ;
/*			header("Location: NEW-Tableau-Adresses.php"); exit() ; */
		}


Je ne sais vraiment plus que faire
Si je questionne 1 and 1 je doute fort que je puisse obtenir une réponse
A bientôt
C'est un drôle de problème !

Par curiosité, j'ai saisi dans mon navigateur l'adresse http://www.jelofre.fr/LesSamoyault/Adresses-Samoyault/Page-Accueil/NEW-Tableau-Adresses.php.

J'y vois
a écrit :

La connexion à la Base de Données a bien réussie.

Ligne 37 ..........

Ligne 45 ..........

function char.

avant le début du site.

Du coup j'ai jeté un oeil au code source et là... catastrophe ! Il m'est signalé 43 erreurs dans la page.

Notamment une balise style placée entre head et body (style doit être inclus dans head).

La fonction JS BRB_PHP_DelWithCon() est placée dans le body. Normalement les scripts sont dans le head.

Des ID qui ne sont pas uniques.

Des li inclus dans des div au lieu de ul (ou ol).

...

Bref, beaucoup d'erreurs !

Bien sûr je ne dis pas que tout ceci est en lien avec la question initiale du sujet toutefois cela me laisse à penser que c'est codé à la vas-y qu'j't'en flûte. Du coup si le php est fait avec la même rigueur, je suis moins étonné du résultat.

En ce qui concerne le bout de code concernant la redirection je ne vois vraiment pas ce qui peut bloquer mais je me dis que si tu reprenais TOUT en le codant dans les règles de l'art, ce problème s'évaporerait peut-être.

Le tips du jour: Pour insérer un saut de ligne (break-row) le tag à utiliser est <br> (ou <br/> en xhtml) et non pas </br>.


Amicalement.
Modifié par Greg_Lumiere (11 Sep 2016 - 17:41)
J'ai essayé de modifier une entrée en ajoutant _TEST à un nom. J'ai été redirigé mais la phrase

"La connexion à la Base de Données a bien réussie."

apparaît avant la déclaration du doctype. Voilà pourquoi le site ne s'affiche pas.

La page est bien chargée mais cette phrase bloque l'affichage.

PS : j'ai refais la manip inverse pour enlever mon assertion.
Modifié par Greg_Lumiere (11 Sep 2016 - 17:48)
Bonjour
Voilà le code PHP généré par DreamWeaver pou ma page NEW-Modif-Adresses.php



<?php
	require_once('connexionMySqli.php'); 
	if (!function_exists("GetSQLValueString")) 
	{
		function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
	{
	if (PHP_VERSION < 6) 
	{
		$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
	}
	switch ($theType) {
		case "text":
			$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
			break;    
		case "long":
		case "int":
			$theValue = ($theValue != "") ? intval($theValue) : "NULL";
			break;
		case "double":
			$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
			break;
		case "date":
			$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
			break;
		case "defined":
			$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
			break;
		}
		return $theValue;
	}
	}
	$editFormAction = $_SERVER['PHP_SELF'];
	if (isset($_SERVER['QUERY_STRING'])) 
	{
		$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
	}

	if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "Form-Modif")) 
	{
		$updateSQL = sprintf("UPDATE adressessamoyault SET nom=%s, prenoms=%s, adresse1=%s, adresse2=%s, codepost=%s, ville=%s, telephone=%s, email=%s, enfants=%s, nom_compagne=%s, prenom_compagne=%s WHERE ID=%s",
                       GetSQLValueString($_POST['nom'], "text"),
                       GetSQLValueString($_POST['prenoms'], "text"),
                       GetSQLValueString($_POST['adresse1'], "text"),
                       GetSQLValueString($_POST['adresse2'], "text"),
                       GetSQLValueString($_POST['codepost'], "text"),
                       GetSQLValueString($_POST['ville'], "text"),
                       GetSQLValueString($_POST['telephone'], "text"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['enfants'], "text"),
                       GetSQLValueString($_POST['nom_compagne'], "text"),
                       GetSQLValueString($_POST['prenom_compagne'], "text"),
                       GetSQLValueString($_POST['ID'], "int"));

		$Result1 = mysqli_query($connexionMySqli, $updateSQL) /*or die(mysqli_error())*/;
/*
# header généré par DreamWeaver CS6
		$updateGoTo = "NEW-Tableau-Adresses.php";
		if (isset($_SERVER['QUERY_STRING'])) 
		{
			$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
			$updateGoTo .= $_SERVER['QUERY_STRING'];
		}
		header(sprintf("Location: %s", $updateGoTo));
*/		

		if ($_SERVER['SERVER_NAME'] == "localhost")
		{
			header("Location: NEW-Tableau-Adresses.php");
		}
		else
		{
			header('Location:  http://www.jelofre.fr/LesSamoyault/Adresses-Samoyault/Page-Accueil/NEW-Tableau-Adresses.php');  
			exit() ;
/*			header("Location: NEW-Tableau-Adresses.php"); exit() ; */
		}
	}

	$colname_rsModifs = "-1";
	if (isset($_GET['numID'])) 
	{
		$colname_rsModifs = $_GET['numID'];
	}
	$query_rsModifs = sprintf("SELECT * FROM adressessamoyault WHERE ID = %s", GetSQLValueString($colname_rsModifs, "int"));
	$rsModifs = mysqli_query($connexionMySqli, $query_rsModifs) or die(mysqli_error());
	$row_rsModifs = mysqli_fetch_assoc($rsModifs);
	$totalRows_rsModifs = mysqli_num_rows($rsModifs);
?>
Et voici le code PHP de dreamweaver pour ma page "appelante" NEW-Tableau-Adresses.php

J'ai remis de l'ordre dans ma page NEW-Tableau comme tu me l'as suggéré
Comme je ne l'ai peut-être pas précisé je suis un autodidacte de 72 berges oui, oui
Bonne soirée
Ho lala le voilà ce code



<!-- ============================================================= -->
<!-- ******* Tableau-Adresses.php ******************************** -->
<!-- ============================================================= -->

<?php 	include('../../Fichiers-Communs-Include/Protection-Pages.php') ; ?>

<?php 
	require_once('connexionMySqli.php'); 

#  mysqli_select_db($connexionMySqli, $database_connexionMySqli);

	$currentPage = $_SERVER["PHP_SELF"];

	$maxRows_rsTableauAdresses = 20;
	$pageNum_rsTableauAdresses = 0;

	if (isset($_GET['pageNum_rsTableauAdresses'])) 
	{
		$pageNum_rsTableauAdresses = $_GET['pageNum_rsTableauAdresses'];
	}
	$startRow_rsTableauAdresses = $pageNum_rsTableauAdresses * $maxRows_rsTableauAdresses;

	$query_rsTableauAdresses = "SELECT nom, prenoms, adresse1, ville, telephone, email, ID, telportable, enfants, nom_compagne, prenom_compagne, adresse2 FROM adressessamoyault ORDER BY nom ASC, prenoms";
	$query_limit_rsTableauAdresses = sprintf("%s LIMIT %d, %d", $query_rsTableauAdresses, $startRow_rsTableauAdresses, $maxRows_rsTableauAdresses);
	$rsTableauAdresses = mysqli_query($connexionMySqli, $query_limit_rsTableauAdresses) or die(mysqli_error());
	$row_rsTableauAdresses = mysqli_fetch_assoc($rsTableauAdresses);

	if (isset($_GET['totalRows_rsTableauAdresses'])) 
	{
		$totalRows_rsTableauAdresses = $_GET['totalRows_rsTableauAdresses'];
	}
	else 
	{
		$all_rsTableauAdresses = mysqli_query($connexionMySqli, $query_rsTableauAdresses);
		$totalRows_rsTableauAdresses = mysqli_num_rows($all_rsTableauAdresses);
	}	
	$totalPages_rsTableauAdresses = ceil($totalRows_rsTableauAdresses/$maxRows_rsTableauAdresses)-1;

	$queryString_rsTableauAdresses = "";
	if (!empty($_SERVER['QUERY_STRING']))
	{
		$params = explode("&", $_SERVER['QUERY_STRING']);
		$newParams = array();
		foreach ($params as $param) {
		if (stristr($param, "pageNum_rsTableauAdresses") == false && stristr($param, "totalRows_rsTableauAdresses") == false) 
			{
				array_push($newParams, $param);
			}
	}
	if (count($newParams) != 0) 
	{
		$queryString_rsTableauAdresses = "&" . htmlentities(implode("&", $newParams));
	}
	}
	$queryString_rsTableauAdresses = sprintf("&totalRows_rsTableauAdresses=%d%s", $totalRows_rsTableauAdresses, $queryString_rsTableauAdresses);
/*
function char($text)
{
	$text = htmlentities($text, ENT_NOQUOTES, "UTF-8");
	$text = htmlspecialchars_decode($text);
	return $text;
}
*/
?>

Jean-Louis a écrit :
Qu'utilises-tu pour vérifier les erreurs ??
Le plugin Html Validator sur Firefox 47 et inf.


Edit le 23/09 : Depuis Firefox 49 (non testé sur Firefox 48), le plugin HTML Validator ne fonctionne plus, je me suis tourné vers la barre d'outils Web Developper qui permet elle aussi de vérifier son code html et css en local comme en ligne. Il me semble que ce plugin est aussi disponible sous d'autres navigateurs.
Modifié par Greg_Lumiere (23 Sep 2016 - 22:37)
Je vais être absent une semaine à partir de demain
A mon retour je vais mettre chez OVH mes fichiers php et sql, ainsi je verrai si le problème est le même
A bientôt
Bonjour
De retour d'un petit périple familial, je reviens vers vous
J'ai transféré mes fichiers et ma base de données chez OVH (site d'une asso)
Mon tableau s'ouvre bien
Pas de problèmes pour appeler la fiche de modifications
Lorsque je clique sur le submit (Je Modifie) OVH m'envoie le message qui suit
Il en est de même si je veux ajouter un nouvel enregistrement
Comme je peux lire hélas en anglais il semblerait que ce soit toujours le header qui fait défaut
Pouvez-vous m'aider ??
d'avance merci

Warning: Cannot modify header information - headers already sent by (output started at /home/rouenhan/www/JLF-Perso/Adresses-Samoyault/Page-Accueil/connexionMySqli.php:38) in /home/rouenhan/www/JLF-Perso/Adresses-Samoyault/Page-Accueil/NEW-Modif-Adresses.php on line 60
Je viens de lire sur la toile que les fichiers devaient être sauvegardés en utf8 sans BOM
C'est ce que je viens de faire avec l'éditeur NotePad
Hélas hélas rien de plus
A noter toutefois ce message d'erreur envoyé de chez OVH alors que rien chez 1 and 1
A +++++++++++
Jean-Louis a écrit :

Warning: Cannot modify header information - headers already sent by (output started at /home/rouenhan/www/JLF-Perso/Adresses-Samoyault/Page-Accueil/connexionMySqli.php:38) in /home/rouenhan/www/JLF-Perso/Adresses-Samoyault/Page-Accueil/NEW-Modif-Adresses.php on line 60

La raison principale qui cause ce genre de message est que ton serveur a envoyé des caractères avant une instruction header();

Le message t'indique d'ailleurs que cela est le cas dans ton fichier connexionMySqli.php à la ligne 38 alors que tu renvois une en-tête dans le fichier NEW-Modif-Adresses.php à la ligne 60. Il peut s'agir de n'importe quel caractère (ou suite de caractères) qui ne fait pas partie d'une fonction.

Pour y remédier il faut procéder de façon heuristique :
- se rendre à la référence citée (et/ou en amont) et vérifier le script afin qu'effectivement il n'y ai pas une erreur de codage
- remonter les instructions header dans le script
- mettre le code de sortie dans un tampon (buffer) afin d'être sûr qu'aucun contenu n'est envoyé avant l'instruction de restitution du tampon (solution ultime qui permet de ne plus avoir à se soucier de ce genre de détail).

Jean-Louis a écrit :
Je viens de lire sur la toile que les fichiers devaient être sauvegardés en utf8 sans BOM
C'est ce que je viens de faire avec l'éditeur NotePad
As-tu vérifiés que ne sont pas apparus des caractères cabalistiques dans tes scripts ? La conversion peut amener à ce genre de déboire.
Modifié par Greg_Lumiere (23 Sep 2016 - 22:39)
Bonjour
Voilà cela semble fonctionner correctement en suivant le petit conseil de Greg_Lumière à savoir supprimer toutes les lignes "blanches" et commentaires dans mon fichier de connexion
J'ai du faire de même dans mes fichiers "Ajout" et "Modif"
Là aussi suppression des lignes de commentaires HTML en tête de fichier et les lignes "blanches"
Par contre au sein du code PHP les lignes de commentaires semblent ne pas entraîner de disfonctionnements

Merci merci

Smiley jap Smiley ravi Smiley biggrin
Cela fonctionne donc chez OVH mais non chez 1 and 1 mon hébergeur actuel
Je crois qu'il ne me reste plus qu'à migrer vers OVH
A ++++
Pages :