Valeur envoyée dans URL toujorus égale à zéro
beegees
Messages postés
102
Statut
Membre
-
beegees Messages postés 102 Statut Membre -
beegees Messages postés 102 Statut Membre -
Bonjour,
Bonjour tout le monde,
J'ai un code qui devrait passer un entier à un script appelant.
Le problème est qu'il passe toujours zéro.
[quote]<lien>http://localhost/MettreAJour.php?NbLignes=0</lien>[/quote]
L'entier qui doit être envoyé est un compteur qui s'incrémente dans cette boucle :
[code]while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
[/code]
Je vous laisse l'entierté de mon code, cela sera sans doute plus claire :
[code]<?php
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
echo '<tr>';
for($i=0;$i<mysql_num_fields($query);$i++)
{
echo '<th>'.mysql_field_name($query,$i).'</th>';
}
echo '</tr>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
}
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;
echo '</p></form>';
?>
[/code]
Et voici le script qui récupère l'entier :
[code]<?php
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$NbLignes = $_GET["compteur"];
for ($i = 0; $i < $NbLignes;$i++)
{
$Matricule = $_REQUEST["txtMatricule".i];
$Nom = $_REQUEST["txtNom".i];
$Prenom = $_REQUEST["txtPrenom".i];
$DateDeNaissance = $_REQUEST["txtDateDeNaissance".i];
$Email = $_REQUEST["txtEmail".i];
$Photo = $_REQUEST["txtPhoto".i];
$txtSQL = "" ;
$txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;
}
?>[/code]
Un super grand merci d'avance pour l'aide.
beegees
Bonjour tout le monde,
J'ai un code qui devrait passer un entier à un script appelant.
Le problème est qu'il passe toujours zéro.
[quote]<lien>http://localhost/MettreAJour.php?NbLignes=0</lien>[/quote]
L'entier qui doit être envoyé est un compteur qui s'incrémente dans cette boucle :
[code]while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
[/code]
Je vous laisse l'entierté de mon code, cela sera sans doute plus claire :
[code]<?php
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
echo '<tr>';
for($i=0;$i<mysql_num_fields($query);$i++)
{
echo '<th>'.mysql_field_name($query,$i).'</th>';
}
echo '</tr>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{
echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
}
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;
echo '</p></form>';
?>
[/code]
Et voici le script qui récupère l'entier :
[code]<?php
# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;
$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}
// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
$NbLignes = $_GET["compteur"];
for ($i = 0; $i < $NbLignes;$i++)
{
$Matricule = $_REQUEST["txtMatricule".i];
$Nom = $_REQUEST["txtNom".i];
$Prenom = $_REQUEST["txtPrenom".i];
$DateDeNaissance = $_REQUEST["txtDateDeNaissance".i];
$Email = $_REQUEST["txtEmail".i];
$Photo = $_REQUEST["txtPhoto".i];
$txtSQL = "" ;
$txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;
}
?>[/code]
Un super grand merci d'avance pour l'aide.
beegees
Configuration: Windows XP Firefox 3.0.3
9 réponses
-
Bonjour
Ton lien est créé avant ta boucle.
$compteur n'a aucune raison de valoir autre chose que 0 avant ta boucle -
Il faut que tu le crées quand la variable à la valeur que tu veux. Faut sortir de Polytechnique pour comprendre ça ?
-
Pourquoi te mets-tu à parler de bouger le form ?
Il faut que je crée le lien après la boucle alors ? oui -
Excuse moi. Je fatigue, là.
Je n'ai encore jamais essayé de passer un valeur dans l'URL en même temps qu'un FORM par POST. En général, on ne combine pas les 2 méthodes mais je suppose que ce n'est pas interdit
ça ne change pas grand chose : tu ne peux pas t'attendre à ce que ton script devine au début de ta boucle, combien il y aura de boucles. Tu ne peux le savoir qu'après la requête
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" method="post" name="frmSaisie" id="frmSaisie">';
il faut donc aussi mettre le /table après /form pour respecter l'imbrication des structures -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Merci pour ta réponse.
Il faut que je crée le lien après la boucle alors ?
beegees -
Re,
Si je bouge le form, une partie du code ne va plus être dedans alors ?
Tu peux pas me montrer un exemple stp ?
Merci encore pour ton aide. -
Bonjour,
Merci pour ta réponse.
Il faut que je crée le lien après la boucle alors ?
beegees -
Mais ce n'est pas un lien, c'est une valeur envoyée avec le form :
echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
La valeur est NbLignes
Merci -
Super, ça marche.
Merci beaucoup pour ta patience et pour le temps que tu m'as consacré.
beegees