Insérer des variables dans une table en php

Fermé
sajodia Messages postés 38 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 20 novembre 2010 - 30 janv. 2009 à 16:51
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 - 9 févr. 2009 à 15:47
Bonjour,
voila le script que j'ai réalisé.Mais mon proplème est que j'arrive pas à insérer dans mes 2tables.Je ne vois pas d'ou vient le problème.aidez moi svp!!!!!!!

<?php
$titre="Nouvelle Commande";
include_once("entete.php");
include_once("menu.php");
include_once("configuration.php");
?>


<div id="corps">

<?php
//sauvegarde de la date au format Mysql
$date=date('Y-m-d');
echo $date.'<br/>';

$id_client= isset($_POST['id_client']) ? $_POST['id_client'] : '';
$nombre_article= isset($_POST['nombre_article']) ? $_POST['nombre_article'] : '';


for($p=1;$p<=$nombre_article;$p++)
{
$quantite_article = "quantite_article_" . $p;
$$quantite_article = isset($_POST["$quantite_article"]) ? $_POST["$quantite_article"] : '';
$$quantite_article= mysql_real_escape_string(htmlspecialchars($$quantite_article));

$id_article = "id_article_" . $p;
$$id_article = isset($_POST["$id_article"]) ? $_POST["$id_article"] : '';
$$id_article= mysql_real_escape_string(htmlspecialchars($$id_article));

}
$selection= isset($_POST['selection']) ? $_POST['selection'] : '';

$valide= isset($_POST['valide']) ? $_POST['valide'] : '';

if (!$selection and !$valide)

{
?>


<h2>Nouvelle Commande</h2>

<form action="creation_commande.php" method="POST">
<table>
<tr><td>
Selection du Client:
</td><td>
<select name="id_client">


<?php

// Sélectionner les champs "nom_emplacement"
//selection emplacement plein
$req5="select id_client,nom_client,prenom_client,num_client from client";
$reponse5 = mysql_query($req5);


while ( $donnees5 = mysql_fetch_array($reponse5) )
{

$j=$donnees5['nom_client'];
$id=$donnees5['id_client'];
echo '<option value="'.$id.'">'.$j.'</option>';

}
?>

</select>
</td></tr>
<tr><td>
Nombre d'article diffèrents :
</td><td>
<select name="nombre_article">

<?php

// Nombre article different disponible

$req6="SELECT COUNT(*) AS nombre_article FROM article";
$reponse6 = mysql_query($req6);
$donnees6 = mysql_fetch_array($reponse6);


$nombre_article= $donnees6['nombre_article'];


for ($i=1;$i<=$nombre_article;$i++)
{
echo '<option >'.$i.'</option>';
}


?>

</select>
</td></tr>

<label for="numero_commande">Numéro commande : </label>
<input name="numero_commande" /> <br />

<label for="date_commande">Date commande : </label>
<input onclick="ds_sh(this);" name="date_commande" readonly="readonly" style="cursor: text" /><br />

<label for="montant_global">Montant global : </label>
<input name="montant_global" /> <br />

<tr><td>
</td><td>
<input type="submit" name="selection" value="OK"/>
</td></tr>
</table>

</form>



<?php

}
//on recupere les valeurs
if ($selection)

{
$selection= mysql_real_escape_string(htmlspecialchars($selection));
$id_client= mysql_real_escape_string(htmlspecialchars($id_client));
$nombre_article= mysql_real_escape_string(htmlspecialchars($nombre_article));

echo 'Client n° : '.$id_client.'<br/>';

echo 'Code article different :'.$nombre_article.'<br/>';


echo '<form action="creation_commande.php" method="POST">';

for($l=1;$l<=$nombre_article;$l++)
{
echo 'Article n° :'.$l.' ';
echo '<select name="id_article_'.$l.'">';

// Sélectionner les champs "Type_article (ou le nom du materiel)"

$reponse = mysql_query("select nom_materiel from materiel");
while ( $donnees = mysql_fetch_array($reponse) )
{
$j=$donnees['nom_materiel'];
$w=$donnees['id_materiel'];
echo '<option value="'.$w.'">'.$j.'</option>';
}


echo '</select>';

echo ' Quantité : ';
echo '<input type="text" name="quantite_article_'.$l.'" /><br/>';
}
echo '<p><input type="submit" value="OK" name="valide" /></p>';

echo '<input type="hidden" name="id_client" value="'.$id_client.'" />';

echo '<input type="hidden" name="nombre_article" value="'.$nombre_article.'" />';

echo '</form>';


}

//on insert dans la base
if ($valide)
{
$valide= mysql_real_escape_string(htmlspecialchars($valide));

// insertion de la nouvelle commande
$req="INSERT INTO `dicteenum`.`commande` (`id_commande` ,`client_id_client` ,`numero_commande`,`date_commande`,`montant_global`)
VALUES ('','".$_POST['id_client']."','".$_POST['numero_commande']."','".$_POST['date_commande']."','".$_POST['montant_global']."')";
$reponse = mysql_query($req);

// aide
if(mysql_error())
{
echo 'Debug : '.mysql_error().'<br />';
}else{
echo 'pas d\'erreur'.'<br />';
}

$req2="select max(id_commande) as id_commande from commande";
$reponse2=mysql_query($req2);
$donnees2=mysql_fetch_array($reponse2);

$id_commande=$donnees2['id_commande'];

for ($p=1;$p<=$nombre_article;$p++)

{
$id_article = "id_article_" . $p;
$quantite_article = "quantite_article_" . $p;


$req3="insert into contient values ('$id_commande','${$nom_materiel}','${$quantite_article}')";
$reponse3=mysql_query($req3);
}

echo '<br/>Nouvelle commande créée';

}

?>

</div>

<?php
include_once("pied_de_page.php");
?>
A voir également:

4 réponses

freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
30 janv. 2009 à 17:32
Trop de code sans les balises < code > pour présenter sur le forum, bah sa tue le code ^^

Donc je peut rien te dire quand a tes tests, c'est illisible, donc je sais pas si sa passe forcément par ton insert ou non.
Pour ta requete, essaie de récupérer d'abord les valeurs de $_POST dans des variables puis de faire ta requete avec ces variables, au lieu de directement poser les $POST dans la chaine.
0
sajodia Messages postés 38 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 20 novembre 2010 2
9 févr. 2009 à 14:43
Voici mon code ça ne marche tjrs pa

<?php 
$titre="Nouvelle Commande"; 
include_once("entete.php"); 
include_once("menu.php"); 
include_once("configuration.php"); 
?> 


<div id="corps"> 

<?php 
//sauvegarde de la date au format Mysql 
$date=date('Y-m-d'); 
echo $date.'<br/>'; 

$id_client= isset($_POST['id_client']) ? $_POST['id_client'] : ''; 
$nombre_article= isset($_POST['nombre_article']) ? $_POST['nombre_article'] : ''; 


for($p=1;$p<=$nombre_article;$p++) 
{ 
$quantite_article = "quantite_article_" . $p; 
$$quantite_article = isset($_POST["$quantite_article"]) ? $_POST["$quantite_article"] : ''; 
$$quantite_article= mysql_real_escape_string(htmlspecialchars($$quantite_article)); 

$id_article = "id_article_" . $p; 
$$id_article = isset($_POST["$id_article"]) ? $_POST["$id_article"] : ''; 
$$id_article= mysql_real_escape_string(htmlspecialchars($$id_article)); 

} 
$selection= isset($_POST['selection']) ? $_POST['selection'] : ''; 

$valide= isset($_POST['valide']) ? $_POST['valide'] : ''; 

if (!$selection and !$valide) 

{ 
?> 


<h2>Nouvelle Commande</h2> 

<form action="creation_commande.php" method="POST"> 
<table> 
<tr><td> 
Selection du Client: 
</td><td> 
<select name="id_client"> 


<?php 

// Sélectionner les champs "nom_emplacement" 
//selection emplacement plein 
$req5="select id_client,nom_client,prenom_client,num_client from client"; 
$reponse5 = mysql_query($req5); 


while ( $donnees5 = mysql_fetch_array($reponse5) ) 
{ 

$j=$donnees5['nom_client']; 
$id=$donnees5['id_client']; 
echo '<option value="'.$id.'">'.$j.'</option>'; 

} 
?> 

</select> 
</td></tr> 
<tr><td> 
Nombre d'article diffèrents : 
</td><td> 
<select name="nombre_article"> 

<?php 

// Nombre article different disponible 

$req6="SELECT COUNT(*) AS nombre_article FROM article"; 
$reponse6 = mysql_query($req6); 
$donnees6 = mysql_fetch_array($reponse6); 


$nombre_article= $donnees6['nombre_article']; 


for ($i=1;$i<=$nombre_article;$i++) 
{ 
echo '<option >'.$i.'</option>'; 
} 


?> 

</select> 
</td></tr> 

<label for="numero_commande">Numéro commande : </label> 
<input name="numero_commande" /> <br /> 

<label for="date_commande">Date commande : </label> 
<input onclick="ds_sh(this);" name="date_commande" readonly="readonly" style="cursor: text" /><br /> 

<label for="montant_global">Montant global : </label> 
<input name="montant_global" /> <br /> 

<tr><td> 
</td><td> 
<input type="submit" name="selection" value="OK"/> 
</td></tr> 
</table> 

</form> 



<?php 

} 
//on recupere les valeurs 
if ($selection) 

{ 
$selection= mysql_real_escape_string(htmlspecialchars($selection)); 
$id_client= mysql_real_escape_string(htmlspecialchars($id_client)); 
$nombre_article= mysql_real_escape_string(htmlspecialchars($nombre_article)); 

echo 'Client n° : '.$id_client.'<br/>'; 

echo 'Code article different :'.$nombre_article.'<br/>'; 


echo '<form action="creation_commande.php" method="POST">'; 

for($l=1;$l<=$nombre_article;$l++) 
{ 
echo 'Article n° :'.$l.' '; 
echo '<select name="id_article_'.$l.'">'; 

// Sélectionner les champs "Type_article (ou le nom du materiel)" 

$reponse = mysql_query("select nom_materiel from materiel"); 
while ( $donnees = mysql_fetch_array($reponse) ) 
{ 
$j=$donnees['nom_materiel']; 
$w=$donnees['id_materiel']; 
echo '<option value="'.$w.'">'.$j.'</option>'; 
} 


echo '</select>'; 

echo ' Quantité : '; 
echo '<input type="text" name="quantite_article_'.$l.'" /><br/>'; 
} 
echo '<p><input type="submit" value="OK" name="valide" /></p>'; 

echo '<input type="hidden" name="id_client" value="'.$id_client.'" />'; 

echo '<input type="hidden" name="nombre_article" value="'.$nombre_article.'" />'; 

echo '</form>'; 


} 

//on insert dans la base 
if ($valide) 
{ 
$valide= mysql_real_escape_string(htmlspecialchars($valide)); 

// insertion de la nouvelle commande 
$req="INSERT INTO `dicteenum`.`commande` (`id_commande` ,`client_id_client` ,`numero_commande`,`date_commande`,`montant_global`) 
VALUES ('','".$_POST['id_client']."','".$_POST['numero_commande']."','".$_POST['date_commande']."','".$_POST['montant_global']."')"; 
$reponse = mysql_query($req); 

// aide 
if(mysql_error()) 
{ 
echo 'Debug : '.mysql_error().'<br />'; 
}else{ 
echo 'pas d\'erreur'.'<br />'; 
} 

$req2="select max(id_commande) as id_commande from commande"; 
$reponse2=mysql_query($req2); 
$donnees2=mysql_fetch_array($reponse2); 

$id_commande=$donnees2['id_commande']; 

for ($p=1;$p<=$nombre_article;$p++) 

{ 
$id_article = "id_article_" . $p; 
$quantite_article = "quantite_article_" . $p; 


$req3="insert into contient values ('$id_commande','${$nom_materiel}','${$quantite_article}')"; 
$reponse3=mysql_query($req3); 
} 

echo '<br/>Nouvelle commande créée'; 

} 

?> 

</div> 

<?php 
include_once("pied_de_page.php"); 
?>
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
9 févr. 2009 à 14:54
Bon, j'ai déjà un grand doute quand au code que tu a écrit:
if (!$selection and !$valide) 
    
    { 
        ?> 

Saches que la partie html que tu a placé après ce bloc ci dessus va etre exécutée à chaque appel de page, et non si le test est valide ou non. Peut être est ce que tu voulais faire, auquel cas, je n'ai rien dit. Sinon, il faut enlever ton ?> et faire un echo de ton code html.

Ensuite, au niveau de tes requetes, je ne vois nul part un mysql_connect, un mysql_select_db ni même de mysql_close. De plus, si tu appelle ces fonctions dans un fichier en include, saches aussi qu'il vaut mieux faire appel à la fonction mysql_query en placant en paramètre la requete, puis le lien vers mysql (lien retourné par la fonction mysql_connect).

Enfin, je vois que tu veut faire un debug au niveau mysql. Pour cela, il y a plus simple: lorsque tu fait appel à mysql_connect ou a mysql_query, tu peut le faire de cette manière.

$lien=mysql_connect('localhost','user','password') or die (mysql_error());
mysql_select_db('database',$lien) or die (mysql_error());
mysql_query($tarequete, $lien) or die (mysql_error());
//Le reste du code et juste avant la fin
mysql_close($lien) or die(mysql_error());


Si il y a un problème d'exécution à l'une de ces fonctions, le reste du code php ne sera pas interprété, et tu pourra te focaliser sur l'erreur.
0
sajodia Messages postés 38 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 20 novembre 2010 2
9 févr. 2009 à 15:22
pour la connexion je l'ai mis dans un fichier configuration.php
<?php
$server = 'localhost';
$user = 'root';
$pass = '';
$table = 'papa;

mysql_connect($server,$user,$pass) or die("Impossible de se connecter au serveur");
/* ensuite se choisir la base : */
mysql_select_db($table) or die ("impossible de se connecter à la base dicteenum");

?>
0
freto Messages postés 1542 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 8 avril 2016 161
9 févr. 2009 à 15:47
Dans ce cas, n'oublie pas le $lien=mysql_connect...
mysql_select_db('database', $lien)...

Et enfin mysql_query($requete,$lien)

Et un conseil: tu risque de t'embrouiller, et d'embrouiller les autres en choisissant de nommer ta variable table, pour lui affecter la valeur papa etc etc....Une base de données regroupe plusieurs tables, mysql_select_db ne choisit que la base de données, pas une table. Ici dans ton exemple, tu selectionne la base de données (et non la table) nommée papa, et en message d'erreur, tu indique qu'il est impossible de se connecter à la base dicteenum. Embrouillant n'est il pas?

De plus si tu a copié collé le code de ton fichier directement ici, il y a une erreur ($table='papa';)=> tu a oublié une quote ' avant le ;
0