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

Signaler
-
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
-
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
}
?>




12 réponses

Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
Pour commencer, quel est le message d'erreur qui t'est retourné?
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..
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
Et en faisant un echo $query; est-ce-que tu a la requête qui te convient?
Non cela ne résout pas mon problème. echo $query; se contente de recopier la requête sur ma page web.
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
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...)
Ca inscrit : INSERT INTO 'eds'( 'id' , 'id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('', '", '", '", '")

Cela veut-il dire que ca ne fonctionne pas?
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])."')";
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
Ç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());
}



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?
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
Avant
mysql_query($query) or die(mysql_error());
tu met echo $query."<br />";

Ainsi tu verra toutes les requêtes exécutées...
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?
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
Non cela doit t'afficher toutes les requêtes d'insertion effectuées...

Mais sinon dans ta tables, toutes les insertions ont bien lieu?
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"
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
$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']." ...";
}

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

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

Merci pour vos réponses :)
Messages postés
2987
Date d'inscription
lundi 7 juin 2010
Statut
Membre
Dernière intervention
17 avril 2014
351
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