Page 1 sur 4

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

Posté : 15 févr. 2006, 12:25
par Invité
1) J'ai un texte dans ma base, et on doit afficher une checkbox a la fin de chaque ligne.
2) On peut modifier les checkbox coché
3) Si les checkbox on ete modifier, on doit les reafficher comme elles ont ete modifier.

alors voici le code :


if($resolution!="")
{
$listeCoche='';
$resolution==trim($resolution);

$probleme=split ("\n",$resolution);

$max=count($probleme);
$cpt=0;
echo "<input type=\"hidden\" name=\"max\" value=\"$max\">";



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


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;
}
je recupere comme ceci :

$ligne = $_POST["liste"];


Alors mes problemes sont :
1) il me met array dans ma base de donnée,

2) il ne m'affiche plus que la premiere ligne, mais la ca marche, si je la coche ou decoche et que je revientapres avoir sauve sur cette page, le resultats est le bon, ca fais un grand pas en avant, reste plusqu'a arrive a afficher les autre ligne si autre ligne il y a ...



alors avec le $cpt, j'affiche les trois ligne, mais si je met tout a blanc apres il me reaffiche tout a blanc, si j'en coche une, il me les coche toute apres ... qui peut m'aider?


3) si je coche pas la premiere il me met ligne non defini



Merci d'avance

Re: problemes, march pour une ligne, mais pas pour plusieurs

Posté : 15 févr. 2006, 12:37
par Maitrepylos
je recupere comme ceci :

$ligne = $_POST["liste"];
Donc tu récupères bien un array, a toi de faire un foreach et de récupérer les données qui sont dedans.

Posté : 15 févr. 2006, 12:43
par Invité
je le fais sur la premiere page ca :$

c'est pas bon?

Posté : 15 févr. 2006, 12:55
par Maitrepylos
Dans le foreach de ta première page tu construit un input avec un tableau, donc chaque fois qu'on trouve une valeur on l'ajoute dans le input, et cela ce fais sous forme de tableau.

Donc quand tu récupères ton $_Post , tu récupères un ARRAY, il faut le traiter avant de la passer dans ta BD

Posté : 15 févr. 2006, 13:03
par Invité
heu encore une chose, je suis que debutant, comment je fais ca?

Posté : 15 févr. 2006, 14:05
par Maitrepylos
Quelque chose dans le genre(en suposant que tu es sur mysql)
foreach($_POST['Liste'] as $valeur) {
    $sql = mysql_query ("INSERT INTO tatable (tonchamp) VALUES($valeur)");
    
    } 


Posté : 15 févr. 2006, 15:42
par Invité
ca marche pas, il m'affiche que le premier et ne stock rien dans ma base de donnee ...
foreach($_POST['liste'] as $valeur) 
    {
    
    $req="UPDATE intervention SET ligne='$valeur' WHERE idinter='".$_GET['varia']."' ";
   	$sql = mysql_query($req) or die('Erreur SQL'); 
  
    }

Posté : 15 févr. 2006, 16:17
par Maitrepylos
$_POST['liste']  $_GET['varia']
Ton form c'est quoi POST ou GET?

Posté : 15 févr. 2006, 16:25
par Invité
c'est un POST

Posté : 15 févr. 2006, 16:26
par Invité
le GET c'est pour la variable que je passe par URL

Posté : 15 févr. 2006, 16:44
par Invité
donc voici mon programme pour l'affichage :
$listeCoche='';
if($resolution!="")
{

$resolution==trim($resolution);

$probleme=split ("\n",$resolution);

$max=count($probleme);
$cpt=0;
echo "<input type=\"hidden\" name=\"max\" value=\"$max\">";



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

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;

}
}

else 
{
	$max=0;
echo "<input type=\"hidden\" name=\"max\" value=\"$max\">";	
 echo "<input type=\"hidden\" name=\"liste\" value=\"j\">"; 
	
}





la reception de valeurs :
if($_POST['liste'])
 {
 foreach($_POST['liste'] as $valeur) 
    {
    
    $req="UPDATE intervention SET ligne='$valeur' WHERE idinter='".$_GET['varia']."' ";
   	$sql = mysql_query($req) or die('Erreur SQL'); 
  
    }
 }
  else
  {
 	$valeur=0;
   	$requ="UPDATE intervention SET ligne='$valeur' WHERE idinter='".$_GET['varia']."' ";
   	$sql = mysql_query($requ) or die('Erreur SQL'); 
  }  
    $requette="UPDATE intervention SET notetech='$notetech',
    									noteprix='$noteprix',
    									duree='$duree',
    									technicien='$technicien',
    									backup='$backup',
    									format='$format',
    									max='$max',
    									line='$line'
    							  WHERE idinter='".$_GET['varia']."'";
	
    $repon = mysql_query($requette) or die('Erreur SQL');
 

Posté : 15 févr. 2006, 16:46
par Maitrepylos
essaye sans le get

Posté : 15 févr. 2006, 16:54
par Invité
ca change rien :

si je modifier pas les trois a blanc, il me les coche tout les trois, si y sont tout les trois blanc et que j'en coche un,ou deux ,ou tous il me les mets tous coché

Posté : 15 févr. 2006, 16:55
par Invité
ca change rien :

si je modifier pas les trois a blanc ( = si je met pas toutes mes checkbox a blanc, elle reste toute coché, si je les coche toute alors elle sont toute non coché), il me les coche tout les trois, si y sont tout les trois blanc et que j'en coche un,ou deux ,ou tous il me les mets tous coché

Posté : 15 févr. 2006, 17:15
par Maitrepylos
je comprend pas tout , mais dans ton foreach ou tu teste $tab, si valeur n'est pas vide, c'est à dire checked, tu n'affiches donc rien?