[PHP/MySQL] Exporter données sur table Mysql

Résolu
Jeanette -  
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'essaie, en vain, d'exporter des données provenant d'une requête sur une table.
Sauriez vous me dire ce qui ne va pas dans mon code?
Merci

Mon code est le suivant :



<?php
session_name('acti');
session_start();
include ('../annexes/connexions/connexion.php');


$req=mysql_query("SELECT intervention.id_evenement,intervention.date_intervention, agent.nom_agent, agent.prenom
FROM intervention, agent
WHERE intervention.id_agent=agent.id_agent && intervention.id_agent_affecte=0")
or die("impossible d'executer la requete");

while($row = mysql_fetch_row($req))
{
$idevenement=$row[0];
$dateint=$row[1];
$nom=$row[2];
$prenom=$row[3];
}

$query= "INSERT INTO 'eds' ( 'id' , 'id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('', '".addslashes($row[0])."', '".addslashes($row[1])."', '".addslashes($row[2])."', '".addslashes($row[3])."')";

if(@mysql_query($query))
$erreur=1;
$i++;

if($erreur==1)
{
?>
<script language='javascript'>alert("Veuillez patienter..");</script>
<?php
}
else
{
?>
<script language='javascript'>alert("Impossible de stocker en base de données. Veuillez contacter votre administrateur.");</script>
<?php
}
?>




A voir également:

12 réponses

Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Pour commencer, quel est le message d'erreur qui t'est retourné?
0
Jeanette
 
Aucun message d'erreur, mais dans ma table je récupère une seule ligne et avec des valeurs nulles.

Sachant que la requête $req fonctionne, j'ai réussi à l'exporter dans un tableau.
Et la $query=INSERT INTO.. fonctionne egalement si je rentre des valeurs à la main.

Donc je pense que le problème vient du code qui relie ma requête $req au reste..
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Et en faisant un echo $query; est-ce-que tu a la requête qui te convient?
0
Jeanette
 
Non cela ne résout pas mon problème. echo $query; se contente de recopier la requête sur ma page web.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Oui je sais. Ce que je te demande c'est si cette requête qui s'affiche sur l'écran est correcte (syntaxe, valeurs à insérer correspondant à celles souhaités...)
0
Jeanette
 
Ca inscrit : INSERT INTO 'eds'( 'id' , 'id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('', '", '", '", '")

Cela veut-il dire que ca ne fonctionne pas?
0
Francois
 
Salut,

et si tu essayais de mettre ton insert into dans la boucle qui parcours le resultat de ton select. Tel que tu l'a ecrit tu parcours d'abord ton tableau jusqua la fin et après tu insere. Normal que tu ais que des valeur nulle.

A quoi te sert tes affectations puisque tu ne t'en sert pas ?
$idevenement=$row[0];
$dateint=$row[1];
$nom=$row[2];
$prenom=$row[3];

Je pense que tu peux egalement virer "id" de ton insert puisque tu ne lui affecte pas de valeur (j'imagine que c'est un auto increment) :
$query= "INSERT INTO 'eds' ('id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('".addslashes($row[0])."', '".addslashes($row[1])."', '".addslashes($row[2])."', '".addslashes($row[3])."')";
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Ça veut dire que la requête exécutée ne t'insère qu'un enregistrement vide...

A ta place au lieu de :

while($row = mysql_fetch_row($req))
{
$idevenement=$row[0];
$dateint=$row[1];
$nom=$row[2];
$prenom=$row[3];
}

$query= "INSERT INTO 'eds' ( 'id' , 'id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('', '".addslashes($row[0])."', '".addslashes($row[1])."', '".addslashes($row[2])."', '".addslashes($row[3])."')"; 


je ferais :


while($row = mysql_fetch_row($req))
{
$idevenement=$row[0];
$dateint=$row[1];
$nom=$row[2];
$prenom=$row[3];

$query= "INSERT INTO 'eds' ( 'id' , 'id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('', '".addslashes($idevenement)."', '".addslashes($dateint)."', '".addslashes($nom)."', '".addslashes($prenom)."')"; 

mysql_query($query) or die(mysql_error());
}



0
Jeanette
 
Alors oui effectivement il fallait mettre le INSERT INTO dans la boucle While. Je vous remercie!

Seulement cela n'affiche qu'une seule ligne de ma requête, avec les bonnes valeurs certes, mais comment tout afficher? La boucle while n'est-elle pas censer retourner toutes les valeurs?
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Avant
mysql_query($query) or die(mysql_error());
tu met echo $query."<br />";

Ainsi tu verra toutes les requêtes exécutées...
0
Jeanette
 
Cela ne fonctionne pas. Mais je ne suis pas sure d'avoir bien compris.
echo $query."<br/>"; devrait afficher tout les résultats dans ma table?
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Non cela doit t'afficher toutes les requêtes d'insertion effectuées...

Mais sinon dans ta tables, toutes les insertions ont bien lieu?
0
Jeanette
 
Non je n'ai toujours qu'une ligne insérée dans ma table.

Est bien comme cela que je dois faire :

echo $query."<br/>";
$req=mysql_query("SELECT intervention.id_evenement,intervention.date_intervention, agent.nom_agent, agent.prenom
FROM intervention, agent
WHERE intervention.id_agent=agent.id_agent && intervention.id_agent_affecte=0")
or die("impossible d'executer la requete");



ou $query = ("SELECT intervention.id_evenement,intervention.date_intervention, agent.nom_agent, agent.prenom
FROM intervention, agent
WHERE intervention.id_agent=agent.id_agent && intervention.id_agent_affecte=0"
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
$query ="SELECT intervention.id_evenement,intervention.date_intervention, agent.nom_agent, agent.prenom
FROM intervention, agent
WHERE intervention.id_agent=agent.id_agent && intervention.id_agent_affecte=0";
$res=mysql_query($query);
while($data=mysql_fetch_assoc($res))
{
echo "<br />intervention.id_agent :".$data['intervention.id_evenement']." intervention.date_intervention : ".$data['intervention.date_intervention']." ...";
}

0
Jeanette
 
J'ai enfin résolu mon problème :

il manquait le mysql_query($query) or die.. dans mon While..

Merci pour vos réponses :)
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Ah ben oui si tu n'exécute pas la requête dans ta boucle seule la dernière insertion a lieu...
Heureusement que je te l'ai marqué... ;-)
Bonne continuation
0