list() affiche une valeur indésirable

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 : list() affiche une valeur indésirable

par Cyrano » 14 mars 2008, 17:55

encore une question, j'ai aps compris la signification du "?" dans le tableau !
Voir ceci

par Mojrem » 14 mars 2008, 17:45

Resalut !

Je viens de me rendre compte d'un truc. :(
Quand ya par exemple 3 $nomar a mettre a jour, ça passe uniquement pour pour le 1er et le 3eme $nomar le deuxieme passe pas, la valeur reste a zero !
j'a bien lu et relu le tableau plusieurs fois, j'ai pas compris d'ou peut venir l'erreur !

Code : Tout sélectionner

$hell = explode(":", $ticket); $nomar = (isset($hell[0]) && !empty($hell[0])) ? $hell[0] : false; $quan = (isset($hell[1]) && !empty($hell[1])) ? $hell[1] : false;

encore une question, j'ai aps compris la signification du "?" dans le tableau !
merci de m'aider encore une fois !

par Aureusms » 14 mars 2008, 15:13

hmmm :-k à 14 ans j'avais d'autres préoccupations plutôt :love5: ... Les temps changent...

par Mojrem » 14 mars 2008, 14:34

Salut !
C'est carrèment un cours :)

1- je notes que a boucle que j'ai corrigé générait un affichage de plusieurs centaines de boucles avec en prime un mysql error, en faite l'erreur etait que tu as improvisé sur le nom de mon champ id, et que moi je l'avais nommé CLID.
La c'est une erreur que j'ai compris.

Le gros de ce bout de script est que tu as carrément viré le list pour le remplacer par

Code : Tout sélectionner

<?php $hell = explode(":", $ticket); $nomar = (isset($hell[0]) && !empty($hell[0])) ? $hell[0] : false; $quan = (isset($hell[1]) && !empty($hell[1])) ? $hell[1] : false;
et c'est la partie la pus interessante donc tu as remplacé le list par un tableau bien clair avec 'si existant, si vide etc ...
c'est la manière la plus clean que j'ai vu !

encore merci !

par Cyrano » 14 mars 2008, 08:12

Pour mémoire, le code PHP est exécuté coté serveur, ça ne peut donc pas faire planter ton navigateur sauf si ça lui envoit des données corrompues.

Or la manière d'écrire une boucle while comme je l'ai fait ne peut en être la cause.

Et encore une fois : que tu sois jeune et en phase d'apprentissage n'est pas une excuse valable : justement, c'est maintenant que tu dois prendre les bonnes habitudes, pas quand tu seras habitué à faire de la bouillie.

Ce qui serait important, c'est que tu comprennes pourquoi ça marche maintenant alors que ça ne tournait pas avant : quelles différences notables as-tu relevé dans la ré-écriture de ce code ? :-k

par Mojrem » 13 mars 2008, 23:32

Resalut !
Tout d'abord merci pour les explications et conseils ! je vais quand meme dire j'ai que 14 ans, je fais qu'apprendre !

Maintenant ça marche ! j'ai quand meme changé un petit peu la premiere boucle while par :

Code : Tout sélectionner

while($r = mysql_fetch_array($dataw))
Car la boucle while que tu m'as donné tournait en boucle et m'a carrément planté firefox
(c'etait peut etre pour me punir a cause de la saleté de code que j'ai sorti :lol: )
En bref la ça marche c'est vraiment génial ![/code]

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Re: list() affiche une valeur indésirable

par Cyrano » 13 mars 2008, 22:50

...Je sais que le code ressemble a une boucherie, mais je suis un débutant tout frais !
C'est rien de le dire. Si tu débutes, il m'apparaît d'autant plus important de te discipliner à coder proprement dès maintenant si tu veux évoluer avec moins de difficultés, ne serait-ce que pour pouvoir relire ton propre code.

Ça devrait ressembler à ceci :
<?php
//...

$query = "SELECT id, tickets FROM reservations WHERE Reference ='". $ref ."'";
$dataw = mysql_query($query);
while(false !== ($r = mysql_fetch_array($dataw)))
{
    $id      = $r['id'];
    $tickets = explode('#', $r['tickets']);
    substr($tickets, 0, -1);
    foreach($tickets as $ticket)
    {
        $hell  = explode(":", $ticket);
        $nomar = (isset($hell[0]) && !empty($hell[0])) ? $hell[0] : false;
        $quan  = (isset($hell[1]) && !empty($hell[1])) ? $hell[1] : false;

        if((false !== $nomar) && (false !== $quan)) 
        {
            $queryxx = "SELECT id, artiste, soldout FROM ar WHERE artiste ='". $nomar ."'";
            // echo "-". $queryxx ."<br>";
            $dataxx = mysql_query($queryxx);
            while(false !== ($rxx = mysql_fetch_array($dataxx)))
            {
                $id        = $rxx['id'];
                $a2        = $rxx['artiste'];
                $soldout   = $rxx['soldout'];

                $nvsoldout = $soldout + $quan;
                $query4    = "UPDATE ar SET soldout ='". $nvsoldout ."' WHERE artiste='". $nomar ."'";
                $dataw4    = mysql_query($query4);
            }
        }
    }
}
Commence déjà par observer les légères modifications apportées juste dans la manière d'écrire certains passages, tu y apprendras certainement un ou deux détails utiles :-k

list() affiche une valeur indésirable

par Mojrem » 13 mars 2008, 22:19

bonsoir =)

j'ai un petit probleme avec la fonction list : voici mon code :

Code : Tout sélectionner

$query="select * from reservations where Reference ='$ref'"; $dataw = mysql_query($query); while($r=mysql_fetch_array($dataw)) { $id = $r[id]; $tickets=$r[tickets]; substr($tickets, 0, -1); foreach(explode('#',$tickets) as $ticket) { $hell=explode(":", $ticket); list($nomar,$quan) = $hell; if($nomar && $quan) { $queryxx="SELECT * FROM ar WHERE artiste ='$nomar'"; echo"-$queryxx<br>"; $dataxx = mysql_query($queryxx); while($rxx=mysql_fetch_array($dataxx)) { $id=$rxx[id]; $a2=$rxx[artiste]; $soldout=$rxx[soldout]; $nvsoldout=($soldout+$quan); $query4="UPDATE ar SET soldout ='$nvsoldout' WHERE artiste='$nomar'"; $dataw4 = mysql_query($query4); } } } }
Au début quand j'affichais les valeurs $nomar et $quan ça me répondais avec es valeurs que je voulais+ un espace vide par ex :

valeur1 : quan1
valeur2 : quan2
: <- ça c'est une valeur vide ...

C'est con, je sais plus ce que j'ai fait mais la ça n'affiche plus la valeur vide

Bref la l'avant derniere requete ($queryxx) s'affiche correctement aussi du gerne :
SELECT * FROM ar WHERE artiste ='valeur1'
SELECT * FROM ar WHERE artiste ='valeur2'
et il n'y a pas d'autre SELECT avec artiste =''

La requete qui est juste apres et viens en dernier ($query4) est censée mettre a jour le champ soldout dans la tabel 'ar' maais elle ne mets a jour que valeur1 et pas valeur 2.

Je sais que le code ressemble a une boucherie, mais je suis un débutant tout frais !
Merci de m'aider !

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]