problemes, march pour une ligne, mais pas pour plusieurs ...

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 17:19

si j'affiche toujours quelque chose, fin je voudrai,

je m'explique, a la fin de chaque ligne je veux une checkbox vide la premiere fois, et apres on peut la coche ou la decoche a l'envie ...

mais je veux quel s'affiche toujours, vide ou remplie.

Mammouth du PHP | 1029 Messages

15 févr. 2006, 17:23

Je passe la main, je ne comprend pas vraiment ton problème.

1) Tu affiche un checkbox
2) Tu enregistres le resultas dans la BD
3)Tu ressort le résultas de la BD
4)Tu réaffiches ton checkbox

C'est ça que tu veux faire?
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 17:28

oui c'est ca, en gros tout ce dont tu m'as montrer, mais le probleme, c'est que ca va pour une checkbox, mais pas pour plusieurs dans le meme texte ....

Mammouth du PHP | 1029 Messages

15 févr. 2006, 17:49

Ok, je commence a comprendre, donc si tu as une valeur tu attribue checked, sinon tu ne l'attribue pas

Bon alors je changerais mon foreach comme ceci
while($cpt<$max)
{
foreach($tab as $clef => $valeur) {
    if($valeur)
    {$checked = 'checked'; // déjà cochée
    $lignee=1;        
    }
        else {
            $checked = ''; // pas cochée
            $lignee=0;}
    // j'affiche juste la checkbox "au bout de chaque ligne
    // à toi de mettre le début de la ligne
}
    echo "$probleme[$cpt]";
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />';
    // pourquoi "liste['.$clef.']" ? nous le verrons en 4.
    echo "<br>";
    
    $listeCoche.=$lignee.',';
    echo "<input type=\"hidden\" name=\"line\" value=\"$listeCoche\">";


$cpt=$cpt+1;

}


mais je suis pas sur.

sinon on se retrouve demain, a moin que quelqu'un de charitable passe pas là
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 1029 Messages

15 févr. 2006, 17:52

non ceci devrais être bon
while($cpt<$max)
{
foreach($tab as $clef => $valeur) {

	
	if($valeur)
    {$checked = 'checked'; // déjà cochée
    $lignee=1;

    echo "$probleme[$cpt]";
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />';
    // pourquoi "liste['.$clef.']" ? nous le verrons en 4.
    echo "<br>";
    
    $listeCoche.=$lignee.',';
    echo "<input type=\"hidden\" name=\"line\" value=\"$listeCoche\">";
       
    }
        else {
            $checked = ''; // pas cochée
            $lignee=0;}
    // j'affiche juste la checkbox "au bout de chaque ligne
    // à toi de mettre le début de la ligne

    echo "$probleme[$cpt]";
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />';
    // pourquoi "liste['.$clef.']" ? nous le verrons en 4.
    echo "<br>";
    
    $listeCoche.=$lignee.',';
    echo "<input type=\"hidden\" name=\"line\" value=\"$listeCoche\">";
}

$cpt=$cpt+1;

}
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 19:26

j'ai teste et ca va po :(

oui tu as bien compris, j'ai retraivaille mon code et j'arrive a ceci :

Les probleme sont : on voit que la premiere ligne, meme si on en a plusieurs.

pfff trois jours sur ce programme ca fait long :?


$listeCoche=$line;
if(!empty($resolution))
{
	$resolution=trim($resolution);
	$probleme=split("\n",$resolution);
	$max=count($probleme);
	$cpt=0;
	?>
		<input type="hidden" name="max" value="<?=$max?>">
	<?
	$tab = explode(',',$ligne);
	foreach($tab as $clef => $valeur) {
	    if($valeur) 
	    {
	    	$checked = 'checked'; 
	    	$lignee=1;	    
	    }
	    else {
	    	$checked = ''; 
	    	$lignee=0;
	    }
	
	    $listeCoche.=$lignee.',';
	    echo $probleme[$clef];
	    ?>
	    	<input type="checkbox" name="liste[<?=$clef?>]" value="1" <?=$checked?> /> <br />
	    	<input type="hidden" name="line" value="<?=$listeCoche?>">
	    <?
	   
	}
}
else 
{
	$max=0;
	?>
	<input type="hidden" name="max" value="<?=$max?>">
	<input type="hidden" name="liste" value="j">
	<?
}

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 19:29

avec ton code, les probleme que j'ai si je coche rien ok ca va,

mais si j'en coche un il me les coche tous et me les affiche en double ...

Mammouth du PHP | 1029 Messages

16 févr. 2006, 09:33

ceci
echo $probleme[$clef]; 
aparait-il plusieurs fois ?
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2006, 11:17

si je rajoutte cet ligne la,

pour etre claire je vais donner un exemple, dans ma base j'ai ceci :
reparation
analyse
complet


voici ce qu'il m'affiche :

avec ces deux ligne ci a la suite :
echo "$probleme[$cpt]"; 
    echo $probleme[$clef]; 


reparation reparation[X]
reparation[X]
analyse reparation[X]
analyse[X]
completreparation[X]
complet[X]

avec juste cette ligne :
echo "$probleme[$cpt]"; 
reparation[x]
reparation[x]
analyse[x]
analyse[x]
complet[x]
complet[x]

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2006, 11:34

je me suis permis de corriger un truc (en rouge) dans ton programme, j'ai vu d'ou venait les doublons, tu avais ferme ton else trop tot, je le poste corrige.
if(!empty($resolution)) 
{ 
    $resolution=trim($resolution); 
    $probleme=split("\n",$resolution); 
    $max=count($probleme); 
    $cpt=0; 
    ?> 
        <input type="hidden" name="max" value="<?=$max?>"> 
    <? 
    $tab = explode(',',$ligne); 
  while($cpt<$max) 
{ 
foreach($tab as $clef => $valeur) { 

     
    if($valeur==1) 
    {
    $checked = 'checked'; 
    $lignee=1; 

    echo "$probleme[$cpt]"; 
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />'; 
    echo "<br>"; 
     
        
    } 
 else [color=red]{[/color] 
            $checked = ''; 
            $lignee=0; 
    

    echo "$probleme[$cpt]"; 
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />'; 
     
    echo "<br>"; 
 [color=red]}[/color]

$listeCoche.=$lignee.','; 
    echo "<input type=\"hidden\" name=\"line\" value=\"$listeCoche\">"; 
   
   
} 
    
$cpt=$cpt+1; 

}

et j'ai aussi mit :
 $listeCoche.=$lignee.','; 
    echo "<input type=\"hidden\" name=\"line\" value=\"$listeCoche\">"; 
en fin de boucle pour l'avoir une fois, code moins lourd.


Alors le probleme maintenant : c'est le meme qu'avant au depart, fin plutot a umilieu lol

si je coche une casse, il me les cochera toute, si je decoche toute les case alors la il me les decoche tous.

Donc des que y a une case coche, il me les coche tous ...

et dans ma base, il me stocke 1,1,1 des qu'une case est coché et si aucune n'es coche alors 0,0,0 ...

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2006, 12:08

je pense savoir d'ou vient mon erreur :

voila je vais reexplique mais je vois pas comment la corrige :oops:


voila, ma variable listeCoche envoit un 0,0,0 si tout est decoché ect ..
hors dans ma base si je coche la seonde, il envoye 1,1,1

donc mon erreur est la, et aussi, au lieu de le remettre a jour a chaque fois dans ma base, il les met a la suite, donc apres un moment on a ceci : 0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1, ...

Mammouth du PHP | 1029 Messages

16 févr. 2006, 12:32

Montre ton update pour la mise à jour de la base!
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2006, 12:46

UPDATE intervention SET notetech='', noteprix='', duree='', technicien='', backup='0', format='0', max='3', line='1,1,1,0,1,1,0,0,1,1,0,1,1,0,0,' WHERE idinter='45'



et je pense qu'une fois ca resolu tout ira bien :D

ca doit etre un probleme avant ma boucle foreach ... j'utilise la meme variable pour lister et pour stocker les valeurs un truc du genre mais voit po comment faire ...

Invité
Invité n'ayant pas de compte PHPfrance

16 févr. 2006, 12:53

voici deux erreur :

qui font que la derniere etape ne va pas, il me semble que je touche au bute, des que ca sera fini

Code : Tout sélectionner

Notice: Undefined offset: 3 in c:\documents and settings\stagiere\bureau\dit simplification programme\tech1.php on line 147 Notice: Undefined offset: 4 in c:\documents and settings\stagiere\bureau\dit simplification programme\tech1.php on line 135

la ligne 147 est la meme que la 135 :
 echo "$probleme[$clef]"; 
Cette erreur est encore du a mon mauvais encodage dans ma base, comme bien encode ma listeCoche???? sans erreur?

Mammouth du PHP | 1029 Messages

16 févr. 2006, 12:57

On va dire qu'on repart de la base et on fais des test ceci fonctionne comme toi tu désires
<?php
$ligne = "0,1,0";

    $tab = explode(',',$ligne);

foreach($tab as $clef => $valeur) {

     
    if($valeur==1)
    {
    $checked = 'checked';
    $lignee=1;

    echo "$probleme[$cpt]";
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />';
    echo "<br>";
    $listeCoche.=$lignee.',';
     
        
    }
else {
            $checked = '';
            $lignee=0;
    

    echo "$probleme[$cpt]";
    echo '<input type="checkbox" name="liste['.$clef.']" value="1" '.$checked.' />';
    echo "<br>";
    $listeCoche.=$lignee.',';
}
echo $listeCoche;
}

?>
1) je passe directement la variable $ligne avec un série de chiffres pour les essais.
2) avec ma série tu remarqueras que $ligneCoche affiche bien ce qu'on lui a demandé à un détails près, il ajoute une virgule a la fin, donc une valeur vide.
Si tu change $ligne comme ceci $ligne = "0,1,0," tu obtiendras un checkbox supplémentaire et ainsi de suite, il faut déja régler ce problème avant d'avancer plus loin.
L'expérience est la somme de toutes nos erreurs.