PHP retour du resultat d'une requete>condition

PHP retour du resultat d'une requete>condition - Programmation

Marsh Posté le 25-03-2002 à 23:54:33    

Salut,  
en ce moment, je suis en train de me faire une petite interface de gestion de mes CD ( je vous la livrerai pour vos commentaires et remarques une fois terminée ).
Mais pour l'instant, je plante sur un pb :
 
Apparement je passe jamais dans le if et toujours dans le else car j'obtiens une erreur :  
 

Citation :

Erreur SQL !
INSERT INTO cd VALUES ('cd24', '', '';) ;
Duplicata du champ 'cd24' pour la clef 1


 
D'ailleurs, normalement, je pense que j'aurais dut obtenir une valeur dans les 3emes '' ... du genre ('cd24', '', '210';)
 

Citation :


// On créer la requete SQL : Sélectionner le CD ayant le nom du champ de saisie
  $sql = "SELECT *
          FROM cd
   WHERE cd_nom='$cd_nom' ;" ;
 
  // On envoie la requete
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()) ;
 
   // On stock le résultat dans $data
                $data = mysql_fetch_array($req) ;
 
    // On test si on a un CD portant déja le nom : Donc $data doit être nul
        // Si on obtient une réponse, c est que le Cd existe déjà
                if($data = mysql_fetch_array($req))
                {
                // Le CD existe déja
                 print("$cd_nom existe déja" ) ;
                }
        // Pour insérer un CD, $data doit être nul
                else
                {
                // On créer la requete SQL et on l'envoie
   $sql = "INSERT INTO cd
    VALUES ('$cd_nom', '', '$cd_place_restante';) ;" ;
 
                 // On envoie la requete
   $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()) ;
 
                 // On ferme la connexion à mysql
   mysql_close() ;
                 }


 
 
Ci quelqu'un pouvait m'éclairer... Marci d'avance  :spookie:

Reply

Marsh Posté le 25-03-2002 à 23:54:33   

Reply

Marsh Posté le 26-03-2002 à 00:04:03    

if($data = mysql_fetch_array($req))  
 
change ca en  :
 
if($data [B]==[/B] mysql_fetch_array($req))


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 26-03-2002 à 00:12:26    

Non, ca ne fait rien. Toujours la même erreur. D'ailleurs c'est, je pense, pas la peine de mettre = ou == car j'ai deja stoclé le resultat dans $data quelques lignes au dessus...
 
Ca donne maintenant :

Citation :

// On stock le résultat dans $data
                $data = mysql_fetch_array($req) ;
 
    // On test si on a un CD portant déja le nom : Donc $data doit être nul
        // Si on obtient une réponse, c est que le Cd existe déjà
                if($data)
                {
                // Le CD existe déja
                 print("$cd_nom existe déja" ) ;
                }
        // Pour insérer un CD, $data doit être nul
                else
                {...

Reply

Marsh Posté le 26-03-2002 à 00:18:57    

tfasson tu peut pas faire ca.
Tu peut pas sortir un resultat comme ca tu doit le parcourir dabord exemple dans ton cas mettre
 
while (list($nom)=mysql_fetch_row($req))
{
$data=$nom
}
 
ensuite pour le test c pareil, tu te fait une requete qui te sors tout tes cd
 
$sql="SELECT cd_nom FROM cd";
$req = mysql_query($sql);
 
tu met ca dans un while comme precedemment et dedans tu feras ton test


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 26-03-2002 à 00:25:38    

Mais dans ce cas la, je devrai n'avoir qu'un seul resultat ( enfin qu'une seue ligne ) vu que je ne doit avoir qu'un cd du même nom. Je suis quand même obligé de faire un while ?  
 
De plus, je viens de trouver un faute d'orthogrpahe qui pourrait expliquer le 3eme chmaps manquant. J'essaie avec la correction :
 

Citation :

<input type="text" name="cd_pace_restante">


 
est devenu
 

Citation :

<input type="text" name="cd_place_restante">


 
je ne l'avais pas mit au debut pour ne pas surcharger le sujet de ma question...

Reply

Marsh Posté le 26-03-2002 à 00:27:13    

meme avec un seul resultat oui tu doit faire le while
 
essaye de toute facon ta rien a perdre


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 26-03-2002 à 00:32:11    

Je viens de faire 2-3 essai avec la correction de faute d'ortho et apparemnt ca marche.
je vais quand même faire le while pour 'rester dans les règles'

Reply

Marsh Posté le 26-03-2002 à 00:33:58    

ben franchement le while ne sert a rien si le nom du cd est clé de ta table !

Reply

Marsh Posté le 26-03-2002 à 00:34:06    

je sais pas du tout si c les regles mais moi je fait comme ca


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 26-03-2002 à 00:39:32    

Citation :

// On envoie la requete
 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()) ;
 
// Si on obtient une réponse, c est que le Cd existe déjà
        while (list($nom)=mysql_fetch_row($req))
 {
 $data=$nom ;
 }
 
       if($data)
       {
       // Le CD existe déja
       print("$cd_nom existe déja" ) ;
       }
// Pour insérer un CD, $data doit être nul
       else
       {...


 
Voila, comme ca ca marche aussi.
Le while doit pas servie a grand chose mais en general on obtient plusieurs lignes donc je crois que toujours le mettre n'est effectivement pas une mauvaise chose...
Merci de m'avoir aider... ;)  
Promis, une fois fini, je propose tout ca au téléchargement !!!

Reply

Marsh Posté le 26-03-2002 à 00:39:32   

Reply

Marsh Posté le 26-03-2002 à 00:44:05    

mouairf ... l'optimisation c faire au plus juste avec la situation qui se présente ... dans ton cas, vu que tu ne PEUT PAS avoir 2 fois le meme nom de cd, le while est TOTALEMENT inutile ...
mais bon ... chacun fait comme il veut

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed