boucle sql

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 : boucle sql

Résolu

par allhambra » 30 août 2010, 16:05

résolu grâce au formulaire

Code : Tout sélectionner

<table border="0" cellspacing="0" cellpadding="5"> <tr valign="top"> <td> <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Rubrique'"; $result = mysql_query($sql) or die ('Erreur : '.mysql_error() ); //$total = mysql_num_rows($result); //if($total) { ?> <table border="0" cellspacing="0" cellpadding="5"> <tr> <td><h2>Rubriques</h2></td> </tr> <?php while($val = mysql_fetch_array($result)) { ?> <tr> <?php echo "<td align=\"left\"><input type='checkbox' nom_mot='nom_mot[]' name='nom_mot[]' value='".$val['nom_mot']."'>".$val['alias']." </td>"; } ?> <!--<td> <input name="nom_mot" type="checkbox" value="<?php echo $val[nom_mot]; ?>" /> <?php echo $val[alias]; ?> <?php //} ?> </td>--></tr></table></td> <td> <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Partenaire'"; $result = mysql_query($sql) or die ('Erreur : '.mysql_error() ); //$total = mysql_num_rows($result); //if($total) { ?> <table border="0" cellspacing="0" cellpadding="5"> <tr> <td><h2>Partenaires</h2></td> </tr> <?php while($val = mysql_fetch_array($result)) { ?> <tr> <?php echo "<td align=\"left\"><input type='checkbox' nom_mot='nom_mot[]' name='nom_mot[]' value='".$val['nom_mot']."'>".$val['alias']." </td>"; } ?> <!--<td> <input name="nom_mot" type="checkbox" value="<?php echo $val[nom_mot]; ?>" /> <?php echo $val[alias]; ?> <?php //} ?> </td>--></tr></table></td> <strong><td> <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='thematique'"; $result = mysql_query($sql) or die ('Erreur : '.mysql_error() ); //$total = mysql_num_rows($result); //if($total) { ?> <table border="0" cellspacing="0" cellpadding="5"> <tr> <td><h2><strong>Th&eacute;matiques</strong></h2></td> </tr> <?php while($val = mysql_fetch_array($result)) { ?> <tr> <?php echo "<td align=\"left\"><input type='checkbox' nom_mot='nom_mot[]' name='nom_mot[]' value='".$val['nom_mot']."'>".$val['alias']." </td>"; } ?> <!--<td> <input name="nom_mot" type="checkbox" value="<?php echo $val[nom_mot]; ?>" /> <?php echo $val[alias]; ?> <?php //} ?> </td>--></tr></table></td></strong> <td> <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='ville'"; $result = mysql_query($sql) or die ('Erreur : '.mysql_error() ); //$total = mysql_num_rows($result); //if($total) { ?> <table border="0" cellspacing="0" cellpadding="5"> <tr> <td><h2>Villes</h2></td> </tr> <?php while($val = mysql_fetch_array($result)) { ?> <tr> <?php echo "<td align=\"left\"><input type='checkbox' nom_mot='nom_mot[]' name='nom_mot[]' value='".$val['nom_mot']."'>".$val['alias']." </td>"; } ?> <!--<td> <input name="nom_mot" type="checkbox" value="<?php echo $val[nom_mot]; ?>" /> <?php echo $val[alias]; ?> <?php //} ?> </td>--></tr></table></td> <td> <?php $sql = "SELECT * FROM motscle, video WHERE etat='on' AND type='type'"; $result = mysql_query($sql) or die ('Erreur : '.mysql_error() ); //$total = mysql_num_rows($result); //if($total) { ?> <table border="0" cellspacing="0" cellpadding="5"> <tr> <td><h2>Types</h2></td> </tr> <?php while($val = mysql_fetch_array($result)) { ?> <tr> <?php echo "<td align=\"left\"><input type='checkbox' nom_mot='nom_mot[]' name='nom_mot[]' value='".$val['nom_mot']."'>".$val['alias']." </td>"; } ?> <!--<td> <input name="nom_mot" type="checkbox" value="<?php echo $val[nom_mot]; ?>" /> <?php echo $val[alias]; ?> <?php //} ?> </td>--></tr></table></td></tr></table>
traité par

Code : Tout sélectionner

// vérifions que la variable a été transmise $id_mot = (isset($_POST['nom_mot']))?$_POST['nom_mot']:null; //echo "Voici les motd cle que vous avez choisi :<br>"; // bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées //if (!empty($nom_mot)) { // echo array_values($nom_mot) ; //echo $nom_mot ; foreach($nom_mot as $cle => $val){ //echo $cle; //echo count ($nom_mot); $n = count($nom_mot)-1; if($cle == $n){ $listenom .= $val; }else { $listenom .= $val.","; } }
:D

Re: boucle sql

par allhambra » 30 août 2010, 14:45

coucou macgawel,
le print me renvoie
id_mot[]

Re: boucle sql

par macgawel » 30 août 2010, 14:42

Bonjour.

Si je suis bien, le message apparaît dans la deuxième page.
A priori, vue le message d'erreur, l'argument $id_mot n'est pas un array #-o

On va donc essayer de trouver à quel endroit se trouve le problème en remontant.
Première étape :
// vérifions que la variable a été transmise
$id_mot = (isset($_POST['id_mot']))?$_POST['id_mot']:null;

// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($id_mot)) {
// Affichage du contenu de $id_mot. Les balises <pre> servent à la mise en forme.
echo "<pre>";
print_r ( $id_mot);
echo "</pre>";       
/* ... */
}
A vue de nez, le print_r ne devrait pas te donner un tableau.

=> On remonte.
Vu qu'on assigne le contenu de $_POST['id_mot'] à $id_mot, on va faire un print_r ($_POST);

Si le contenu de $_POST ne correspond pas à ce qu'on attend, il faut aller voir dans le formulaire...

Re: boucle sql

par allhambra » 30 août 2010, 14:40

coucou,
merci de ta réponse,
Je me doutais bien qu'il y avait un truc du genre, vu le message d'erreur, mais même en syntaxant

Code : Tout sélectionner

value="id_mot5[]"
je n'ai pas plus de succés. :cry:

Re: boucle sql

par Spols » 30 août 2010, 14:37

la variable $id_mots n'est pas un tableau, et php te dit que la fonction array_values et foreach ont besoin d'un tableau

boucle sql

par Afrodite » 30 août 2010, 14:28

Bonjour,

Je bute sur la récupération d'une variable sql sous forme de tableau dans un formulaire.
J'ai une table "vidéo" avec un champ "id_mot" qui contient le champ "nom_mot" ou "alias" de la table "motscle".
Je cherche donc à mettre à jour le champ "id_mot" (vidéo) qui contient plusieurs mots (ex: pau, sport).
Note : il y à peut être plus simple pour récupérer les données sous formes de colonnes par "type, mais je n'ai pa su trouver.
<table border="0" cellspacing="0" cellpadding="5">
  <tr valign="top">
 <td>  <?php 
 
 
 $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Rubrique'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );

$total = mysql_num_rows($result); 
if($total) { ?>
<table border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><h2>Rubrique</h2></td>
    </tr>
    <?php
	   while($row = mysql_fetch_array($result)) {
	  ?>
    <tr>
    <td>
<input name="id_mot" type="checkbox" value="id_mot" />
      <?php echo $row[alias]; ?>
      <?php  }} ?>
</td></tr></table></td>
   <td> <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Partenaire'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result); 
if($total) { ?>
<table border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><h2>Partenaire</h2></td>
    <?php
	   while($row = mysql_fetch_array($result)) {
	  ?>
       <tr>
   <td> <input name="id_mot" type="checkbox" value="nom_mot[]" />
      <?php echo $row[alias]; ?>
      <?php  }} ?>
</td></tr></table></td>
   <td> <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Thématique'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result); 
if($total) { ?>
<table border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><h2>Thématique</h2></td>
    <?php
	   while($row = mysql_fetch_array($result)) {
	  ?>
      <tr>
     <td> <input name="id_mot" type="checkbox" value="nom_mot[]" />
      <?php echo $row[alias]; ?>
      <?php  }} ?>
</td></tr></table></td>
   <td> 
   <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Ville'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result); 
if($total) { ?>
<table border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><h2>Ville</h2></td>
    <?php
	   while($row = mysql_fetch_array($result)) {
	  ?>
   <tr valign="top">
 <td> <input name="id_mot" type="checkbox" value="nom_mot[]" />
      <?php echo $row[alias]; ?>
      <?php  }} ?>
</td></tr></table></td>
   <td> 
    <?php $sql = "SELECT * FROM motscle WHERE etat='on' AND type='Type'";
$result = mysql_query($sql) or die ('Erreur : '.mysql_error() );

$total = mysql_num_rows($result); 
if($total) { ?>
<table border="0" cellspacing="0" cellpadding="5">
  <tr>
    <td><h2>Type</h2></td>
 
  <?php
	   while($row = mysql_fetch_array($result)) {
	  ?>
    <tr valign="top">
   <td> <input name="id_mot" type="checkbox" value="nom_mot[]" />
      <?php echo $row[alias]; ?>
      <?php  }} ?>
</td></tr></table></td></tr></table>
.

Le formulaire est traité comme suit :
// vérifions que la variable a été transmise
$id_mot = (isset($_POST['id_mot']))?$_POST['id_mot']:null;

//$id_mot = array();
//while($tab[] = mysql_fetch_array($req)){} 
//echo implode(",",$id_mot);

//echo "Voici les motd cle que vous avez choisi :<br>";
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($id_mot)) {
	
	echo array_values($id_mot) ;
echo  $id_mot ;
	
	foreach($id_mot as $cle => $val){ 
	echo $cle;
	echo count ($id_mot);
$n = count($id_mot)-1;
if($cle == $n){
			
 $listenom .= $val;
}else {
$listenom .= $val.",";
}
}
}
ce qui me génère un beau
Warning: array_values() [function.array-values]: The argument should be an array in /homez/update-video.php on line 64
id_mot
Warning: Invalid argument supplied for foreach() in /homez/update-video.php on line 67
toute aide est bienvenue pour résoudre ce soucis, merci