IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème de Foreach : Warning: Invalid argument supplied for foreach() [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Par défaut Problème de Foreach : Warning: Invalid argument supplied for foreach()
    Bonjour,

    Voilà plusieurs heures que je me bat avec un foreach qui me retourne une erreur, et à force de toucher le code dans tous les sens je ne sais plus par où le prendre.

    Un petit coup de main serait sympa.

    Il s'agit d'un système de traitement de contact, le foreach gère les statuts des contacts.

    Voici l'erreur qu'il m'est retourné :
    Warning: Invalid argument supplied for foreach() in D:\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.php on line 11
    Voici maintenant mon code php de la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
    <html dir="ltr" lang="fr">
    <head>
    <?php
    //Connexion à la base de données.
    	require "config/settings.inc.php";
    	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    	mysql_select_db(DB_BDD);
    if(@$_POST['formSend'] == 'envoi') {
    		foreach (@$_POST["statut_rep"] as $choix => $val){
    		$resultats=mysql_query('UPDATE `reponse_contact` SET `id_statut_rep`="'.$val.'"] WHERE `id_contact`= "'.$_POST['statut_rep'].'" ') or die('erreur sql : '.mysql_error());
    		}
    	}
    ?>
    </head>
    <body>
     
    <table border="6" cellpadding="5" cellspacing="0" id="tableau">
     
    			<tr>
    				<th> Statut de la réponse </th>
    				<th> Date de réception du mail</th>
    				<th> Statut de la personne</th>
    				<th> Nom</th>
    				<th> Prénom</th>
    				<th> Sujet</th>
    			</tr>
    			<?php 
     
     
    			$requete="SELECT * FROM `contact`,`reponse_contact` WHERE `contact`.`id_contact`=`reponse_contact`.`id_contact` ORDER BY `date`";
    			$resultats=mysql_query($requete) or die('erreur sql : '.mysql_error()) ;
    				while ($mess=mysql_fetch_array($resultats)){
     
    					echo("<tr>");
    			echo'<form method="post" enctype="multipart/form-data" action="#" onsubmit="return valider();">';
    				echo'<td>';
    						$requete2="SELECT * FROM `statut_rep` ";
    						$resultats2=mysql_query($requete2) or die("erreur sql : ".mysql_error()) ;
    						echo "<select name='statut_rep'>";
    						while($stat = mysql_fetch_array($resultats2)){
    							echo '<option value="'.$stat['id_statut_rep'].'" ';
    							if($mess['id_statut_rep'] == $stat['id_statut_rep']){
    							echo 'selected ';
    							}
    							echo' >'.$stat['statut_rep'].'</option>';
    						}
    						echo "</select>";
     
     
    				echo'</td>';
    					echo("<td>".$mess["date"]."</td>");
     
    					echo("<td>".$mess["statut"]."</td>");
     
    					echo'<td>'.$mess["nom"].'</td>';
    					echo'<td>'.$mess["prenom"].'</td>';
    					echo'<td><a href="message.php?id_contact='.$mess["id_contact"].'">'.$mess["sujet"].'</a></td>';
     
     
    					echo'</tr>';
    					}
     
    					?>.
    </table>
    					<input type="hidden" name="formSend" value="envoi" />				
    					<input type="submit" value="Valider" />
     
     
    </body>
    </html>
    Je vous remercie par avance de l'aide que vous allez m'apporter.

    Cordialement

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    "statut_rep" est une liste déroulante simple.
    Elle renvoit une seule valeur et non un tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Par défaut
    Citation Envoyé par sabotage Voir le message
    "statut_rep" est une liste déroulante simple.
    Elle renvoit une seule valeur et non un tableau.
    Bonsoir,

    Merci de la piste avez vous une idée de comment dois-je m'y prendre pour que cela fonctionne ?

    Merci d'avance.

    Cordialement

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu enleves simplement le foreach() en laissant l'update tel quel.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu enleves simplement le foreach() en laissant l'update tel quel.
    J'ai appliqué les modifications mais le changement de statut ne se fait pas en bdd ni dans la liste déroulant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
    <html dir="ltr" lang="fr">
    <head>
    <?php
    //Connexion à la base de données.
    	require "config/settings.inc.php";
    	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
    	mysql_select_db(DB_BDD);
    if(@$_POST['formSend'] == 'envoi') {
    		$resultats=mysql_query('UPDATE `reponse_contact` SET `id_statut_rep`="'.mysql_escape_string($id_statut_rep).'" WHERE `id_contact`= "'.$_POST['statut_rep'].'" ') or die('erreur sql : '.mysql_error());
    	}
    ?>
    </head>
    <body>
     
    <table border="6" cellpadding="5" cellspacing="0" id="tableau">
     
    			<tr>
    				<th> Statut de la réponse </th>
    				<th> Date de réception du mail</th>
    				<th> Statut de la personne</th>
    				<th> Nom</th>
    				<th> Prénom</th>
    				<th> Sujet</th>
    			</tr>
    			<?php 
     
     
    			$requete="SELECT * FROM `contact`,`reponse_contact` WHERE `contact`.`id_contact`=`reponse_contact`.`id_contact` ORDER BY `date`";
    			$resultats=mysql_query($requete) or die('erreur sql : '.mysql_error()) ;
    				while ($mess=mysql_fetch_array($resultats)){
     
    					echo("<tr>");
    			echo'<form method="post" enctype="multipart/form-data" action="#" onsubmit="return valider();">';
    				echo'<td>';
    						$requete2="SELECT * FROM `statut_rep` ";
    						$resultats2=mysql_query($requete2) or die("erreur sql : ".mysql_error()) ;
    						echo "<select name='statut_rep'>";
    						while($stat = mysql_fetch_array($resultats2)){
    							echo '<option value="'.$stat['id_statut_rep'].'" ';
    							if($mess['id_statut_rep'] == $stat['id_statut_rep']){
    							echo 'selected ';
    							}
    							echo' >'.$stat['statut_rep'].'</option>';
    						}
    						echo "</select>";
     
     
    				echo'</td>';
    					echo("<td>".date("j-m-Y à G:i",strtotime($mess["date"]))."</td>");
     
    					echo("<td>".$mess["statut"]."</td>");
     
    					echo'<td>'.$mess["nom"].'</td>';
    					echo'<td>'.$mess["prenom"].'</td>';
    					echo'<td><a href="message.php?id_contact='.$mess["id_contact"].'">'.$mess["sujet"].'</a></td>';
     
     
    					echo'</tr>';
    					}
     
    					?>.
    </table>
    					<input type="hidden" name="formSend" value="envoi" />				
    					<input type="submit" value="Valider" />
     
     
    </body>
    </html>
    Une idée ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Commence par enlever tes @

    Controle ensuite ce que contient $_POST
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Warning: Invalid argument supplied for foreach()
    Par destigul dans le forum Langage
    Réponses: 4
    Dernier message: 02/05/2015, 23h09
  2. PROBLEEM Warning: Invalid argument supplied for foreach()
    Par kapitcho dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/06/2012, 00h20
  3. Warning: Invalid argument supplied for foreach() in
    Par Jinkas dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/09/2011, 18h24
  4. Warning: Invalid argument supplied for foreach()
    Par billyrose dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2009, 15h36
  5. Réponses: 11
    Dernier message: 19/05/2006, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo