8791 sujets

Développement web côté serveur, CMS

Bonjour
Voila débutant en php, j'essaye de monter un site web de gestions de stock mais j'ai un petit souci d’ordre technique sur mon site.
J'essaye d'envoyer un inpute texte depuis un tableau php, le seul problème est qu'il n'envoi rien Smiley ohwell (en tous cas sur ma 2em page qui reçoit donc les valeur je n'ai rien)


-Voici le code de la 1er page:

<form method=POST action=modifstock2.php>
<?php

while($data = mysql_fetch_assoc($req))  { 
$i=0;
	echo "<tr>";
		echo "<td>".$data["ID"]."</td>";
		echo "<td>".$data["Emplacement"]."</td>";
		echo "<td>".$data["Ref_Constructeur"]."</td>";
		echo "<td>".$data["Autre_Ref"]."</td>";
		echo "<td>".$data["Modele"]."</td>";
		echo "<td>".$data["Couleur"]."</td>";
		echo "<td>".$data["Stock"]."</td>";
		echo "<td>".$data["Stock_Min"]."</td>";
		echo "<td><input type='checkbox' name='delete_$i' value='".$data['ID']."'></td>";
		[b]echo "<th><input type='text' name='Valeur' value=''></td>";[/b]
		echo "<td><input type='submit' value='Modifier' /></td>";
	echo "</tr>";
$i++;
}

echo "</TABLE>";
?>
	<input type="hidden" name="max" value="<?php echo $i; ?>">


-et voici le code sur ma 2em page :

<?php

session_start();
	include("connextionbdd.php");

   $max = 0;
if (isset($_POST['max'])) {
  $max = $_POST['max'];
}
for ($i=0;$i<$max;$i++) {
  if (isset($_POST['delete_'.$i])) {
  
  echo 'ID'.$_POST['delete_'.$i].'<br>';
	echo 'Le nouveau stock est de '.$_POST['Valeur'];
	
$ID = $_POST['delete_'.$i];
$Stock5 = $_POST['Valeur'];

mysql_query("UPDATE `super` SET Stock = $Stock5 WHERE ID = $ID");
  }
}
?>


Le code fonctionne vu que la checkbox retourne bien une valeur, et que le bouton modifier marche bien... Smiley confus
Je n'arrive juste pas à trouver l'erreur pour le champ texte

PS: si je met l'input texte hors de mon tableau là sa marche

Si vous avez une idée je suis preneur

Merci de votre aide
Rhax
Bonjour.

Je pense que le problème vient de ta construction html plutôt maladroite.

On voit le début de ta <form> mais pas sa fin, et la fin d'un <table>, mais pas son début, donc il faut que tu ouvres ta <table> DANS la <form>
Modifié par SolidSnake (10 Feb 2015 - 17:59)
Bonjour,
Merci pour ta réponse
Je m'excuse pour la constructions de mon html, si tu des conseils pour qu'il soit plus claire je suis preneur Smiley smile

Je remet le code en entier, malheureusement mon echo "</TABLE>" est déjà dans le form... Smiley decu

Code:

<form method=POST action=modifstock2.php>
<?php

while($data = mysql_fetch_assoc($req))  { 
$i=0;
	echo "<tr>";
		echo "<td>".$data["ID"]."</td>";
		echo "<td>".$data["Emplacement"]."</td>";
		echo "<td>".$data["Ref_Constructeur"]."</td>";
		echo "<td>".$data["Autre_Ref"]."</td>";
		echo "<td>".$data["Modele"]."</td>";
		echo "<td>".$data["Couleur"]."</td>";
		echo "<td>".$data["Stock"]."</td>";
		echo "<td>".$data["Stock_Min"]."</td>";
		echo "<td><input type='checkbox' name='delete_$i' value='".$data['ID']."'></td>";
		echo "<th><input type='text' name='Valeur' value='' /></td>";
		echo "<td><input type='submit' value='Modifier' /></td>";
	echo "</tr>";
$i++;

}
echo "</TABLE>";

?>
	<input type="hidden" name="max" value="<?php echo $i; ?>">
	
<!--  Commentaire 
	<input type="text" name="Valeur" value="">
	<input type="submit" value="Modifier" />
-->

</form>


Voila voila
SI vous avez d'autre idée n’hésiter pas

Merci
Rhax
Modifié par Rhaxephon (11 Feb 2015 - 11:14)
Rhaxephon a écrit :
Je remet le code en entier, malheureusement mon echo "&lt;/TABLE&gt;" est déjà dans le form... Smiley decu

Oui, mais justement, il n'a pas le début de ton tableau, et c'est ça le soucis.
ah bon bha voici toutes la pages ^^
rien de biens exceptionnelle Smiley cligne
Petite recap de ce qu'il y a :
on a donc en 1er la connexions à ma bdd (ah oui j'ai oublier de presiser que le tableau va chercher des valeurs contenus dans une BDD sous phpmyandmin)
Ensuite un petit menu
Apres on a la récupération de la table ainsi que des "options" pour filtrer dans ma table ($test et $choix2 )
Je sélectionne donc ma table et l'affiche sous forme de tableau


 <?php
 
// On démarre la session AVANT d'écrire du code HTML
session_start();
	include("connextionbdd.php");
	?>
<html>
<head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <title>Creation Cartouche</title>
    </head>
    
    
        <div id="bloc_page">
            <header>
                <div id="titre_principal">
                    <img src="Images\WSF.jpg" alt="WSF" id="logo" />
					<p> </p>
                    <h1>Creation Consomable</h1>
                   
                </div>
             </header>    
                <nav>
                    <ul>
                        <li><a href="RequetteV2.php">Retour Selection</a></li>
						<li><a href="Deco.php">Deconnexion</a></li>	
                    </ul>
                </nav>


<?php

// on crée les requêtes SQL
// permet de décrire le schéma, donc d'avoir entre autre le nom des colonnes
$sql_col = 'describe super;';
// selectionne ttes les lignes

//recuperations du filtre
$test = $_POST['filtreV2'] ;
$choix2 = $_POST['choix'] ;

// selections via le filtre
$sql = "SELECT * FROM super WHERE $choix2 like '%$test%'"; 


// on envoie les requêtes
$req_col = mysql_query($sql_col) or die('Erreur SQL !<br>'.$sql_col.'<br>'.mysql_error());
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

//on créé un tableau
echo "<TABLE BORDER>";

//parcourt du résultat de la 1ere requete, nom des colonnes et formatage du tableau 
while($data_col = mysql_fetch_assoc($req_col)) {
	echo "<th>".$data_col["Field"]."</th>";
}	


?>



<form method=POST action=modifstock2.php>
<?php

while($data = mysql_fetch_assoc($req))  { 
$i=0;
	echo "<tr>";
		echo "<td>".$data["ID"]."</td>";
		echo "<td>".$data["Emplacement"]."</td>";
		echo "<td>".$data["Ref_Constructeur"]."</td>";
		echo "<td>".$data["Autre_Ref"]."</td>";
		echo "<td>".$data["Modele"]."</td>";
		echo "<td>".$data["Couleur"]."</td>";
		echo "<td>".$data["Stock"]."</td>";
		echo "<td>".$data["Stock_Min"]."</td>";
		echo "<td><input type='checkbox' name='delete_$i' value='".$data['ID']."'></td>";
		echo "<th><input type='text' name='Valeur' value='' /></td>";
		echo "<td><input type='submit' value='Modifier' /></td>";
	echo "</tr>";
$i++;

}
echo "</TABLE>";

// on ferme la connexion à mysql

?>
	<input type="hidden" name="max" value="<?php echo $i; ?>">
	<!--  
	<input type="text" name="Valeur" value="">
	<input type="submit" value="Modifier" />
	-->
</form>

    
</html>



J’espère avoir répondu a ta question Smiley cligne
Encore merci pour ton aide
Rhax
Modifié par Rhaxephon (11 Feb 2015 - 12:15)
Essaie comme je te le proposais d'ouvrir ta balise <form> avant ta balise <table> (vu que tu la fermes après ta fermeture de <table>) pour plus de cohérence.

<form action="">
	<table></table>
</form>


Et pas
<table>
	<form action="">
		</table>
	</form>


Et ajoute un <tr> et </tr> autour de ta boucle while(){ <th> }
Si j'ai bien compris il faut que je mettent le form ici:
Sinon pourquoi ne pas le mettre en début de code? cela éviterais de de fermer et rouvrir le php inutilement non?


<?php

// on crée les requêtes SQL
// permet de décrire le schéma, donc d'avoir entre autre le nom des colonnes
$sql_col = 'describe super;';
// selectionne ttes les lignes

//recuperations du filtre
$test = $_POST['filtreV2'] ;
$choix2 = $_POST['choix'] ;

// selections via le filtre
$sql = "SELECT * FROM super WHERE $choix2 like '%$test%'"; 

?>
	[b][#red]<form method=POST action=modifstock2.php>[/#][/b]
<?php
// on envoie les requêtes
$req_col = mysql_query($sql_col) or die('Erreur SQL !<br>'.$sql_col.'<br>'.mysql_error());
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

//on créé un tableau
echo "<TABLE BORDER>";

//parcourt du résultat de la 1ere requete, nom des colonnes et formatage du tableau 
while($data_col = mysql_fetch_assoc($req_col)) {
	echo "<th>".$data_col["Field"]."</th>";
}

while($data = mysql_fetch_assoc($req))   {

$i=0;
	echo "<tr>";
		echo "<td>".$data["ID"]."</td>";
		echo "<td>".$data["Emplacement"]."</td>";
		echo "<td>".$data["Ref_Constructeur"]."</td>";
		echo "<td>".$data["Autre_Ref"]."</td>";
		echo "<td>".$data["Modele"]."</td>";
		echo "<td>".$data["Couleur"]."</td>";
		echo "<td>".$data["Stock"]."</td>";
		echo "<td>".$data["Stock_Min"]."</td>";
		echo "<td><input type='checkbox' name='delete_$i' value='".$data['ID']."'></td>";
		echo "<td><input type='text' name='Valeur' value='' /></td>";
		echo "<td><input type='submit' value='Modifier' /></td>";
	echo "</tr>";
$i++;

}
echo "<TABLE>";


?>
	<input type="hidden" name="max" value="<?php echo $i; ?>">
	<!--  
	<input type="text" name="Valeur" value="">
	<input type="submit" value="Modifier" />
	-->
</form>


Comparé à ce que tu ma dis je n'ai pas de <table> à proprement parlé vu que je fais juste un echo< table>... je vais cherche via le While les valeur contenu dans ma BDD et je l'affiche via le echo tr qui me permet d'avoir un tableau.

D'un point de vu fonctionnelle je ne comprend pas l’intérêt de mettre un <tr> a cote du while
J'ai quand même essayer de le mettre mais a chaque fois il me dit :syntax error, unexpected '{' je continu de chercher pourquoi et reposte si je trouve la solution Smiley cligne

Désoler si je peut paraître comme un gros boulet qui ne comprend rien mais disons que cela fais 5mois que je suis sur ce site et je commence à m’arracher les cheveux Smiley ohwell

Voila
J’espère quand même avoir réussi à faire ce que tu ma demandé^^
Merci pour ton aide
Rhax
Rhaxephon a écrit :
Comparé à ce que tu ma dis je n'ai pas de <table> à proprement parlé vu que je fais juste un echo <table>

Ah ben si, tu fabrique juste de l'html côté serveur avec du PHP renvoyé sur ton navigateur, si tu ouvres un inspecteur d'élément tu verras ta <table> et tout le reste.

Rhaxephon a écrit :
D'un point de vu fonctionnelle je ne comprend pas l’intérêt de mettre un <tr> a cote du while
J'ai quand même essayer de le mettre mais a chaque fois il me dit :syntax error, unexpected '{' je continu de chercher pourquoi et reposte si je trouve la solution Smiley cligne

Et comme tu fabriques de l'html, il faut qu'il soit correcte, i.e. une <table> est construite d'une certaine manière, au plus simple :
<table>
	<tr>
		<th colspan="5"></th>
	</tr>
	<tr>
		<td></td>
		<td></td>
		<td></td>
		<td></td>
		<td></td>
	</tr>
</table>

Sinon de manière plus complète :
<table>
	<thead>
		<tr>
			<th colspan="5"></th>
		</tr>
	</thead>
	<tfoot>
		<tr>
			<th colspan="5"></th>
		</tr>
	</tfoot>
	<tbody>
		<tr>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
		</tr>
	</tbody>
</table>

Seul des <tr> (thead, tbody, tfoot) doit être dans une <table>, et seul des <td> ou <th> dans un <tr>, donc pas de <form>, de <div>, <span> ou autres....

Et pour ta <form>, il s'agit encore bien d'une balise html, mais rien ne sert de la mettre à la racine de ton body, et si tu veux éviter la fermeture et réouverture de ta balise php, il suffit juste de faire un echo '<form method="POST" action="modifstock2.php">'; avant ton echo table.

J'espère avoir été clair sur tous les points.
Bonjour,

Merci beaucoup pour tes explications Smiley smile
Tu m'a beaucoup aider...
J'ai passé 3 jours à chercher pourquoi je n'arrivais pas à envoyer mes valeurs et il suffisait juste de déplacer le Form...
J'ai inspecté mon site et en effet le vois bien mon <table>, merci pour l'astuce.

Maintenant que mon site et "opérationnelle" il va falloir passer à l'optimisations de tous sa^^

Encore merci pour ton aide et de tes réponses
Rhax
Administrateur
SolidSnake a écrit :
Seul des &lt;tr&gt; (thead, tbody, tfoot) doit être dans une &lt;table&gt;,

Et caption qui permet de légender un tableau (et col et colgroup pour euh des trucs) Smiley hinhin
N'oublie pas de passer ton topic en résolu, si ton problème l'est !

Felipe a écrit :
Et caption qui permet de légender un tableau (et col et colgroup pour euh des trucs) Smiley hinhin

Smiley fache Rhaaaah, toutes mes plates... (j'ai déjà rigolé en mettant le tfoot) Smiley lol
Modifié par SolidSnake (12 Feb 2015 - 15:07)