PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 25-11-2010 09:31:52

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

P'tite boucle capricieuse

coucou,

J'étais en train de coder une boucle lorsque celle-ci, énervée, ne boucla pas ^^
Il s'agit d'un script qui interroge une bdd distante, et boucle sur une importation tant que les résultats concordent avec des conditions...
$link : connection locale | $linkdistant : connection distante (vous ne l'auriez pas trouver tout seul ^^)


if ($fct == 'importrma') {
    set_time_limit(0);
    $result=mysql_query("SELECT id_rma, dateachat, serie1, serie2, serie3, serie4, probleme, contact, nom_enseigne, nom_mag, adresse, cp, ville, pays, appart
               FROM tab_rma
               INNER JOIN tab_magasins ON tab_rma.code_magasin = tab_magasins.code_magasin
               LEFT JOIN tab_enseignes ON tab_rma.code_enseigne = tab_enseignes.code_enseigne
               WHERE acceptation = 1 AND exportok = 0"
,$linkdistant);
    while($row=mysql_fetch_object($result)){//parcours du résultat de la requête
    /* on fixe les résultats dans des variables */
      $id_rma = $row->id_rma; $dateachat = $row->dateachat; $serie1 = $row->serie1; $serie2 = $row->serie2; $serie3 = $row->serie3; $serie4 = $row->serie4;
      $probleme = $row->probleme; $nom = $row->nom_enseigne.' - '.$row->nom_mag; $adresse = $row->adresse; $cp = $row->cp; $ville = $row->ville;
      $pays = $row->pays; $contact = $row->contact; $appartenance = $row->appart;
        if ($row->nom_enseigne == 'Particulier') {$partousoc = '1';} else {$partousoc = '0';}
      /* On trouve l'id max et on rajoute 1 pour l'enregistrement à venir */
      $result = mysql_query("SELECT max(id_retour) FROM tab_retour",$link);
                        $max=mysql_fetch_array($result);
                        $newid = $max[0]+1;
      mysql_query("INSERT INTO tab_retour(id_retour,dateachat, serie1, serie2, serie3, serie4, rma, motif, nom, adresse, cp, ville, pays, contact, partousoc, appartenance)
                        VALUES ('$newid','$dateachat','$serie1','$serie2','$serie3','$serie4','$id_rma',
           '$probleme','$nom','$adresse','$cp','$ville','$pays','$contact','$partousoc','$appartenance')"
,$link);
      /* puis on insere l'id dans les autres tables */
      mysql_query("INSERT INTO tab_access (id_access) VALUES ('".$newid."')",$link);
      mysql_query("INSERT INTO tab_statut (id_statut) VALUES ('".$newid."')",$link);
      mysql_query("INSERT INTO tab_repa (id_repa) VALUES ('".$newid."')",$link);
      mysql_query("INSERT INTO tab_devis (id_devis) VALUES ('".$newid."')",$link);
      /* puis on met a jour le statut "export" dans la tab distante tab_rma */
      mysql_query("UPDATE tab_rma SET exportok = '1' WHERE id_rma = '".$row->id_rma."'",$linkdistant);
    }
                echo '<script>document.location="index.php?page=gestrma"</script>';}
 

Lorsque je lance ma requête, tout se passe bien, j'ai bien mon export qui se fait, mais qui s'arrête au premier enregistrement...
En gros, si j'ai 5 occurrences à importer, je dois cliquer 5 fois.... "génial" ma boucle ^^
Sauf que j'ai beau relire, je dois être miro, mais ce qui cloche ne me saute pas aux yeux ....

Merci d'avance wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#2 25-11-2010 11:15:19

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : P'tite boucle capricieuse

Saluton,
Pas très PDO tout cela. wink
La condition de sortie de la boucle est

while($row=mysql_fetch_object($result))

si tu sors après le premier parcours c'est, j'imagine, qu'il n'y a plus rien à parcourir.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 25-11-2010 14:11:23

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : P'tite boucle capricieuse

Effectivement, pas PDO.... mais le cahier des charges est comme ça sad .
Pour le parcours, il reste encore des choses à parcourir ...
Avant de venir poster, j'ai vérifié via un

if ($fct == 'importrma') {
    set_time_limit(0);
    $result=mysql_query("SELECT id_rma, dateachat, serie1, serie2, serie3, serie4, probleme, contact, nom_enseigne, nom_mag, adresse, cp, ville, pays, appart
               FROM tab_rma
               INNER JOIN tab_magasins ON tab_rma.code_magasin = tab_magasins.code_magasin
               LEFT JOIN tab_enseignes ON tab_rma.code_enseigne = tab_enseignes.code_enseigne
               WHERE acceptation = 1 AND exportok = 0"
,$linkdistant);
    while($row=mysql_fetch_object($result)){//parcours du résultat de la requête
      echo $row->id_rma.'<br>';
    }
}

et j'ai bien ma liste de résultats...
C'est pour cela que l'erreur m'échappe... ce doit être encore un truc con... comme d'hab
Après avoir regardé en détails mes { }...  elle doit être vicieuse pour s'être planqué comme ça ^^


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#4 25-11-2010 15:37:35

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : P'tite boucle capricieuse

Ah, ça y est j'ai vu l'ÉNORMITÉ.
Tu réaffectes le résultat de la requête dans la boucle à la même variable $result, BOULETISSIME


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 25-11-2010 16:03:04

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : P'tite boucle capricieuse

rrrrrrrhhhhhaaaaaaaaa, bien vu l'aveugle !!!!!!! big_smile
Décidement, qu'est ce que l'on ferait sans toi wink


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

Pied de page des forums