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

Résolu/Fermé
Jeanette - 6 juil. 2010 à 08:46
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 6 juil. 2010 à 11:44
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 09:19
Pour commencer, quel est le message d'erreur qui t'est retourné?
0
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 09:28
Et en faisant un echo $query; est-ce-que tu a la requête qui te convient?
0
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 09:48
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
Ca inscrit : INSERT INTO 'eds'( 'id' , 'id_evenement' , 'date_intervention' , 'nom_agent' , 'prenom' )
VALUES ('', '", '", '", '")

Cela veut-il dire que ca ne fonctionne pas?
0
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 10:02
Ç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
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 10:17
Avant
mysql_query($query) or die(mysql_error());
tu met echo $query."<br />";

Ainsi tu verra toutes les requêtes exécutées...
0
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 10:47
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
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 11:01
$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
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 lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 11:44
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