stockage additionnel

BFH
Eléphant du PHP | 214 Messages

17 mai 2005, 16:31

Bonjour, je desirerais savoir comment faire pour avoir une variable qui stocke en additionnant les valeurs:
Explications, je voudrais que $bla recueille a la fin du for toutes les valeurs que $bla a eut pendant l'execution du for.
Voila mon code, (qui est faux bien sur)
for($i=1;$i<count($Ch);$i++)
{
echo ("Valeur cochée numero ".$i." : ".$Ch[$i]."<br>");
$bla=$Ch[$i];	
}	
$query="SELECT DISTINCT IPage FROM item WHERE ReportID=\"$P\" && IPage IN ('$bla') ";
Si quelqu'un sait comment le corriger. D'avance Merci.
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

17 mai 2005, 16:37

Ce que tu peux faire, c'est mettre les valeurs dans un tableau,mais en fait, ce tableau existe déjà ; exemple:
$bla = array();
for($i=1;$i<count($Ch);$i++)
{
echo ("Valeur cochée numero ".$i." : ".$Ch[$i]."<br>");
array_push($bla,$Ch[$i]);
}
Tu transfèrerais le contenu de $ch dans $bla, ce qui ne sert strictement à rien, autant utiliser directement $ch.

Ou alors j'ai mal compris la question et encore moins vu le but de la manoeuvre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

17 mai 2005, 16:43

Tu veux dire que je peux ecrire:
for($i=1;$i<count($Ch);$i++) 
{ 
echo ("Valeur cochée numero ".$i." : ".$Ch[$i]."<br>"); 
     
}     
$query="SELECT DISTINCT IPage FROM item WHERE ReportID=\"$P\" && IPage IN ('$Ch') "; 
:?: :?: :?: :?:
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

17 mai 2005, 17:12

ha non, ok, je vois ce que tu veux dire. Non, MySQL ne saura pas lire le tableau comme ça, enfin je ne crois pas.
j'ai déjà fait un truc du genre, faut que j'y réfléchisse: tu vas devoir construire dynamiquement la requête. Donne moi un petit moment.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

17 mai 2005, 17:17

Ça devrait fonctionner avec un truc dans ce goût là :
<?
$query="SELECT DISTINCT IPage FROM item WHERE ReportID=\"$P\" && ";
for($i=1;$i<count($Ch);$i++)
{
    echo ("Valeur cochée numero ".$i." : ".$Ch[$i]."<br>");
    if($i < (count($Ch) - 1))
    {
        $query .= "IPage = ". $Ch[$i] ."|| ";
    }
    else
    {
        $query .= "IPage = ". $Ch[$i];
    }
}
$query .= ")";
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 983 Messages

17 mai 2005, 17:34

Et pourquoi pas ca:
<?
$query="SELECT DISTINCT IPage FROM item WHERE ReportID IN \"$P\" && IPage IN ";
$maListe = '(';
$nbelem= count($Ch);
for($i=1;$i<$nbelem;$i++)
{
    $maListe.=$Ch[$i].',';
}
//on supprime la derniere virgule de la liste
$maListe = substr($maListe,0,-1);
$maListe.=')';
$query .= $maListe;
?>
J'ai édité: en effet, on faisait le count dans la condition du for, ce qui n'est pas du tout optimisé ;)
Modifié en dernier par rami le 17 mai 2005, 17:50, modifié 1 fois.

Mammouth du PHP | 19672 Messages

17 mai 2005, 17:47

pourquoi pas en effet: il faudrait mettre les deux en compétition point de vue performance.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
pjl
ViPHP | 2119 Messages

17 mai 2005, 19:28

Et avec la fonction implode, ce ne serait pas plus simple ?

Invité
Invité n'ayant pas de compte PHPfrance

18 mai 2005, 15:39

J'ai testé la formulation de rami pour voir, en l'adaptant une peu
$Ch=$_GET["Ch"];
$Total="";
for($i=0;$i<count($Ch);$i++)
{	
$Total=$Total.', '.$Ch[$i].' ';
}
$Total=substr($Total,2,-1);//sert à supprimer le permier espace et la premiere virgule ainsi que le dernier espace.
echo ($Total."<p>");
$query= "SELECT DISTINCT IPage FROM item WHERE ReportID='".$P."' && IPage IN ( ".$Total." )";
Bon pour moi ce code semble correct mais cela me retourne
Démarage automatique, Imprimantes, Antivirus, ... //Bref, cela ecris la valeur de $Total
Errreur de syntaxe près de 'automatique , Imprimantes , Antivirus)' à la ligne 1
Je comprends pas pourquoi il y a cette erreur! Si qq peut m'expliquer merci.

BFH
Eléphant du PHP | 214 Messages

18 mai 2005, 15:48

C'est moi qui ait posté ci_dessus mais j'avais oublié de me logger! :langue:

Avec la méthode de Cyrano ça fonctionne mais je rencontre un porblème car j'ai des mots qui contiennent des apostrophes donc ça bug! Y a t il un moyen d'ignorer les apostrophes contenues dans $Ch[$i] :?:
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

18 mai 2005, 15:50

add_slashes($ch[$i]);
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 16:01

c'est plutôt
addslashes($ch[$i]);
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

BFH
Eléphant du PHP | 214 Messages

18 mai 2005, 16:02

oui c'est ce que je voulais dire
=D> =D> =D> Cyrano,=D> =D> =D> encore une fois merci
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Mammouth du PHP | 19672 Messages

18 mai 2005, 17:11

c'est plutôt
addslashes($ch[$i]);
T'as raison, me suis gourré tiens, l'autre, c'est l'ancienne formulation me semble (php3)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 17:12

Ca se peut !!!

Perso, je ne l'ai jamais utilisée donc je ne me pronoce pas trop !!! :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer