Page 1 sur 1

des champs vides

Posté : 04 nov. 2011, 14:26
par xzena
Bonjour,
je sais pas pourquoi ma requête ça marche pas,si quelqu'un peut en jeter un coup d’œil sera très gentil :)
Ps:il me retourne que le premier champ :Num Affectation,le reste vide
<?php
$id_aff=0;
if(isset($_GET['id_aff']) && !empty($_GET['id_aff']))
{
 $id_aff=$_GET['id_aff'];
}
$sql='select  * from affectation where id_aff=".$id_aff."  ';
$req=mysql_query($sql) or die(mysql_error());;	
$data=mysql_fetch_assoc($req);
//echo $sql;

?>				
<div align="center">
  <table width="375">
    <form name="motif_aff" method="post" action="?do=db_aff_modif&id=22&id_aff=<? echo $id_aff ?>" onsubmit="return control_saisie();">   
        <tr>
        <td align="left">Num Affectation</td>
        <td align="left"><input type="text" name="id_aff" size="25"  value="<? echo $id_aff ?>"/></td>
      </tr>
      <tr>
        <td align="left">liste</td>
        <td align="left"><input type="text" name="liste" size="25" value="<? echo $data['liste'] ?>"/></td>
      </tr>
     <tr>
        <td colspan="2"><div align="center">
            <input type="submit" name="modifier" value="Modifier" />
        </div></td>
      </tr>
    </form>
  </table>
</div>

Re: des champs vides

Posté : 04 nov. 2011, 14:48
par Mazarini
$sql='select  * from affectation where id_aff=".$id_aff."  ';
à remplacer par :
$sql='select  * from affectation where id_aff=\''.$id_aff'.''\';
En suposant que $id_aff est une chaine de caractère.

Re: des champs vides

Posté : 04 nov. 2011, 14:55
par Cyrano
Observe attentivement comment tu as utilisé les quotes/guillemets pour encadrer les composants de ta requête SQL : si tu décommentes la ligne echo $sql, au lieu de voir la valeur de ta variable $id_aff, tu dois voir directement le nom de la variable.

Donc... ;)

Re: des champs vides

Posté : 04 nov. 2011, 15:01
par xzena
merci Mazarini pour ta réponse mais ça pas marché :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in motif_aff.php on line 11

Re: des champs vides

Posté : 04 nov. 2011, 15:13
par dunbar
merci Mazarini pour ta réponse
Et pour le Mammouth ??

il a dit la même chose.....

Re: des champs vides

Posté : 04 nov. 2011, 15:15
par Mazarini
J'ai laissé une quote derrière la variable.

Re: des champs vides

Posté : 04 nov. 2011, 15:50
par Cyrano
Mouais, collections de mauvaises habitudes qui aboutissent toujours à ce genre de questionnement existentiel un peu stérile et surtout qui font perdre un temps considérable.

Reprenons à la base voulez-vous ? Partons de la requête SQL de départ et supposant que l'identifiant recherché soit par exemple 12. La requête sera donc :
SELECT  * FROM affectation WHERE id_aff = 12
Bien, maintenant, si on veut affecter cette requête comme valeur d'une variable, on va encadrer le requête comme on ferait de n'importe quelle chaine de caractère :
$sql = "SELECT  * FROM affectation WHERE id_aff = 12";
Notez au passage que j'ai encadré la chaine de caractère de guillemets et non d'apostrophes.
Remplaçons maintenant notre valeur « 12 » écrite en dur par une variable PHP. Les mauvaises habitudes feront écrire ceci :
$sql = "SELECT  * FROM affectation WHERE id_aff = $id_aff";
Maintenant la bonne pratique : Nous avons une chaine de caractère, elle n'est pas interprétée par PHP, mais s'il y a une variable PHP et que la chaine est encadrée de guillemets et non d'apostrophes, une variable sera correctement interprétée. Prenez l'habitude systématique de bien séparer le PHP de ce qui n'en est pas, donc :
$sql = "SELECT  * FROM affectation WHERE id_aff = ". $id_aff;
Petit complément. Si la valeur de notre identifiant était une chaine de caractère et non un entier, par exemple « douze », alors il faudrait écrire la requête SQL :
SELECT  * FROM affectation WHERE id_aff = 'douze'
Ce qui donnerait en PHP :
$sql = "SELECT  * FROM affectation WHERE id_aff = 'douze'";
Notez que comme j'ai encadré la chaine de caractère de guillemets et dans la requête SQL la valeur de l'identifiant à tester d'apostrophes, il n'y a pas de conflit.

Remplaçons enfin la valeur « douze » en dur par une variable :
$sql = "SELECT  * FROM affectation WHERE id_aff = '". $id_aff ."'";
Voilà, là c'est propre, la coloration syntaxique des éditeurs ne se mélange pas les crayons et il n'y aura pas d'erreur à l'exécution.

On prend de bonnes habitudes et on se discipline ! Je repasse tout à l'heure pour ramasser les copies :mrgreen:

Re: des champs vides

Posté : 04 nov. 2011, 16:22
par xTG
J'espère que le professeur a protégé la variable avant de l'utiliser. =P~

Re: des champs vides

Posté : 04 nov. 2011, 16:26
par xzena
merci Mazarini pour ta réponse
Et pour le Mammouth ??

il a dit la même chose.....
Désolé j'avais un problème de cnx donc c’était pas actualisé le 2ème post ;)

Alors Boss Cyrano voilà ma copie sans faute 20/20 :D ..merci bien surtout pour l'explication j'ai bien aimé.et ça marche Merci à vous tous.
@xTG nouveau teste ça ? #-o

Re: des champs vides

Posté : 04 nov. 2011, 16:28
par Cyrano
J'espère que le professeur a protégé la variable avant de l'utiliser. =P~
Pour ce qui me concerne, j'ai résolu ça en ne faisant plus que des requêtes préparées avec PDO, ça limite considérablement les risques même s'il est vrai qu'il traine encore de petits cas où il serait possible de pirater le système, il y a eu une publication récemment sur ce point.

Mais bon, ce n'était pas le sujet, le professeur sermonnait de la graine de délinquant du PHP/SQL :mrgreen: