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

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 12:25

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

Mammouth du PHP | 1029 Messages

15 févr. 2006, 12:37

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.
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 12:43

je le fais sur la premiere page ca :$

c'est pas bon?

Mammouth du PHP | 1029 Messages

15 févr. 2006, 12:55

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
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 13:03

heu encore une chose, je suis que debutant, comment je fais ca?

Mammouth du PHP | 1029 Messages

15 févr. 2006, 14:05

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)");
    
    } 

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

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 15:42

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'); 
  
    }

Mammouth du PHP | 1029 Messages

15 févr. 2006, 16:17

$_POST['liste']  $_GET['varia']
Ton form c'est quoi POST ou GET?
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 16:25

c'est un POST

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 16:26

le GET c'est pour la variable que je passe par URL

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 16:44

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');
 

Mammouth du PHP | 1029 Messages

15 févr. 2006, 16:46

essaye sans le get
L'expérience est la somme de toutes nos erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 16:54

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é

Invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 16:55

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é

Mammouth du PHP | 1029 Messages

15 févr. 2006, 17:15

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?
L'expérience est la somme de toutes nos erreurs.