Erreur php ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur php ?

Re: Erreur php ?

par AB » 01 sept. 2011, 18:40

...et puis il manque aussi des virgules entre les champs de ta requête update. Evites aussi d'utiliser $_REQUEST, utilises $_GET ou $_POST.

Re: Erreur php ?

par Cyrano » 01 sept. 2011, 18:37

En mettant des guillemets autour du nom d'une colonne, MySQL ne reconnait pas le nom de cette colonne, donc comme tu fais « WHERE 'index' = .. », au lieu de « WHERE index = ... », MySQL ne reconnait pas la colonne.

Et au passage, je te signale que tu enregistres deux fois tes variables $_POST en session, la seconde fois étant tout à fait inutile.

Re: Erreur php ?

par ezacal » 01 sept. 2011, 18:35

j'ai trouvé
php n'a pas aimé que j'appelle un variable "index", je l'ai renommé et tout va bien.

Re: Erreur php ?

par Alf?> » 01 sept. 2011, 18:34

Salut,

Il y a bien un souçi, ici :
WHERE 'index' = '$index='";
C'est ça je suppose ?
WHERE 'index' = '$index=' ";
Mais le "=" est en trop. (a moins que ce soit une syntaxe qui met échappé)
WHERE 'index' = '$index' ";
Petit détails technique :
Evite de nommer tes champs de table BD comme les paramètres de syntaxe SQL :
WHERE index = '$index' ";
Assure toi des nomenclatures du style nomdechamps_nomtable. (ça évitera les conflits)

oubli les echo() avant ou après les header(), sauf si ils sont dans des conditions séparés qui n'implique pas l'un et l'autre en même temps.

Genre dans ces quelques ligne :
mysql_query ($sql);
echo mysql_error();
mysql_close($db);
header("location:bien.php");
Bonne chance pour la suite.

Re: Erreur php ?

par ezacal » 01 sept. 2011, 18:18

je me rend compte que la requete n'abouti pas si je fais un echo d'une des variable, il n'y a rien
c'est bien un pb de requête mais je ne vois pas mon erreur

Erreur php ?

par ezacal » 01 sept. 2011, 15:49

bonjour
je suis en train de faire un formulaire où un client peut modifier les différents produits qu'il propose:
chaque bien a un champs "client" et bien sur un champs index unique (id)
lorsqu'on sélectionne un bien, on fait appel à son index
mais lorsque apparait le formulaire "bienmaj.php, les champs ne sont pas préremplis alors que l'index est connu
je vous montre mon code php

Code : Tout sélectionner

<?php session_start(); // connexion à la base $db = mysql_connect('localhost','root','') or die('Erreur de connexion '.mysql_error()); // sélection de la base mysql_select_db('bienvenu',$db) or die('Erreur de selection '.mysql_error()); $admin=$_SESSION['admin']; $motpasse=$_SESSION['motpasse']; $Msg=''; $index=$_REQUEST['index']; $pays=$_REQUEST['pays']; $region=$_REQUEST['region']; $dep=$_REQUEST['dep']; $ville=$_REQUEST['ville']; $type=$_REQUEST['type']; $adulte=$_REQUEST['adulte']; $enfant=$_REQUEST['enfant']; $sdb=$_REQUEST['sdb']; $clim=$_REQUEST['clim']; $ext=$_REQUEST['ext']; $piscine=$_REQUEST['piscine']; $repas=$_REQUEST['repas']; $kreeter=$_REQUEST['kreeter']; $pays2=$_REQUEST['pays2']; $region2=$_REQUEST['region2']; //Mise en session des valeurs du formulaire while ( list($cle, $val) = each( $_POST ) ){ $_SESSION[$cle] =$_POST[$cle]; } //Si validation du formulaire if(isset($_POST['Submit'])){ //Verif champ obligatoire if(empty($_SESSION['pays'])){ $Msg .= "Erreur de saisie : Vous n'avez pas précisé votre pays !"; } if(empty($_SESSION['region'])){ $Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre région !"; } if(empty($_SESSION['dep'])){ $Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre département !"; } if( empty($_SESSION['ville'])){ $Msg .= "<BR>Vous n'avez pas précisé la ville principale proche de votre domicile !"; } if(empty($_SESSION['adulte'])){ $Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé le nombre d'adultes que vous pouvez recevoir!"; } // Aucun champ n'est vide, on peut enregistrer dans la table if( empty($Msg)){ //Mise en session des valeurs du formulaire while ( list($cle, $val) = each( $_POST ) ){ $_SESSION[$cle] =$_POST[$cle]; } // Aucun champ n'est vide, on peut enregistrer dans la table if ($_REQUEST['action']=="maj"){ $sql="UPDATE client SET pays='$pays', region='$region', dep='$dep', ville='$ville', type='$type', adulte='$adulte', enfant='$enfant' sdb='$sdb' clim='$clim' ext='$ext' piscine='$piscine' repas='$repas' kreeter='$kreeter' pays2='$pays2' region2='$region2' WHERE 'index' = '$index='"; mysql_query ($sql); echo mysql_error(); mysql_close($db); header("location:bien.php"); } elseif ($_REQUEST['action']=="suppr") { $sql="DELETE FROM bien WHERE 'index' = '$index='"; mysql_query ($sql); mysql_close($db); header("location: client.php"); } } } $sql="SELECT * FROM bien WHERE 'index' = $index"; $resultat=mysql_query($sql) or die("Erreur SQL : $sql<br/>".mysql_error()); $bien = mysql_fetch_array ($resultat) ; ?>
le formulaire possède des champs de type

Code : Tout sélectionner

<tr> <td align="right" class="style11">pays* : </td> <td align="left" class="style13"><select name="pays" id="pays"> <option value="">Selectionnez</option> <option value="france"<?php if ($bien['pays'] == "france") echo "SELECTED";?>>france</option> <option value="deutchland"<?php if ($bien['pays'] == "deutchland") echo "SELECTED";?>>deutchland</option> <option value="espania"<?php if ($bien['pays'] == "espania") echo "SELECTED";?>>espania</option> <option value="england"<?php if ($bien['pays'] == "england") echo "SELECTED";?>>england</option> </select></td> </tr>
le même script fonctionne si le client veut modifier sa fiche personnelle (clientmaj.php)
je ne comprends pas :shock: :shock: :shock: :shock:
merci de votre aide