Accueil > Forum > > > > 2 requêtes SQL dans une autre requête.
2 requêtes SQL dans une autre requête.
mercredi 29 septembre 2010 à 09:52:06 |
2 requêtes SQL dans une autre requête.

gnut
|
Bonjour,
Voilà j'ai fait un script qui me permet de passer des données XML vers une Table (annonces) de ma BDD. Celui-ci fonctionnait très bien mais je dois ajouter 2 INSERT SQL comprenant chacun 2 SELECT SQL vers une autre Table (valeurs). Et bien sûr si je vous fais appel c'est que ça ne fonctionne pas tel que je l'ai fait  .
Code PHP :
<?php
/// ligne 220 testée OK
mysql_query("INSERT INTO annonces (ref_annonce_client, id_reg, id_dep, id_cat, email, password, ville, code_pos, status, soc_nom, soc_siren, type, nom, tel, titre, radio, ann, prix, Kilométrage, Année_Modéle, Cylindrée, Surface, Piéces, Capacité, random_code, confirm, valid, date, tel_cache, ip, url_pho1, url_pho2 ,url_pho3 , url_pho4, url_pho5 )VALUES('$ref', '$re', LEFT('$de',2), '$Typeann', '$mail ', '$password', '$vil', '$cod', '$sta', '$nom', '', '1', '$nom', '$telag', '$titre', '$ra', '$desc', '$pri', '', '', '', '$surf', '$nbpiece', '', '$rand', '$conf', '$val', '$time', 'N', '$ipadresse', '$pho1', '$pho2', '$pho3', '$pho4', '$pho5')");
/// > ligne 222 problème
mysql_query("INSERT INTO valeurs (id_for, id_ann, val_for ) VALUES ( 'mysql_query("SELECT id_for FROM form WHERE id_cat='$Typeann' ORDER BY id_for")', 'mysql_query("SELECT id_ann FROM annonces WHERE ref_annonce_client='$ref'")', '$surf' )");
/// > ligne 224 problème aussi certainement
mysql_query("INSERT INTO valeurs (id_for, id_ann, val_for ) VALUES ( 'mysql_query("SELECT id_for FROM form WHERE id_cat='$Typeann' ORDER BY id_for DESC")', 'mysql_query("SELECT id_ann FROM annonces WHERE ref_annonce_client='$ref'")', '$nbpiece' )")
or die("Erreur MySQL : ".mysql_error());
?>
Resultat :
Parse error: syntax error, unexpected T_STRING in /homez.194/touslesb/www/admin/insertannonces.php5 on line 222
|
|
mercredi 29 septembre 2010 à 10:38:20 |
Re : 2 requêtes SQL dans une autre requête.

neigedhiver
|
Salut,
Tu mélanges PHP et MySQL : dans une requête SQL, tu ne peux pas utiliser de PHP : mysql_query n'est pas une fonction MySQL, donc, interdite.
Il suffit de laisser la deuxième requête remplir les valeurs, le moteur de MySQL sait très bien gérer ça. Sauf que toi, tu voudrais récupérer des données de plusieurs tables... Il faut pour cela que les tables soient liées d'une manière ou d'une autre : il faut que tu puisses associer à un enregistrement de l'une, un enregistrement de l'autre, car tu ne peux pas effectuer une requête SQL par valeur à insérer. Tu ne peux qu'avoir une requête SQL qui récupère toutes les valeurs à insérer.
Là, j'ai beau regarder ce que tu veux faire, j'ai du mal à te proposer une solution, parce que je ne sais pas à quoi ressemblent les tables concernées, ni à quoi correspondent les champs... Donc... Soit tu as compris ce que je te dis et tu arrives à te dépatouiller tout seul, soit tu donnes plus d'informations pour que je puisse te donner une meilleure réponse ;)
Par ailleurs, je t'invite à indenter tes requêtes SQL dans ton code, tu verras, c'est quand même plus clair (et MySQL, tout comme PHP, se fout pas mal des espaces et tabulations en plus).
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
mercredi 29 septembre 2010 à 15:54:25 |
Re : 2 requêtes SQL dans une autre requête.

gnut
|
alors j'ai refait:
Code PHP :
<?php
mysql_query("INSERT INTO annonces (ref_annonce_client, id_reg, id_dep, id_cat, email, password, ville, code_pos, status, soc_nom, soc_siren, type, nom, tel, titre, radio, ann, prix, Kilométrage, Année_Modéle, Cylindrée, Surface, Piéces, Capacité, random_code, confirm, valid, date, tel_cache, ip, url_pho1, url_pho2 ,url_pho3 , url_pho4, url_pho5 )VALUES('$ref', '$re', LEFT('$de',2), '$Typeann', '$mail ', '$password', '$vil', '$cod', '$sta', '$nom', '', '1', '$nom', '$telag', '$titre', '$ra', '$desc', '$pri', '', '', '', '$surf', '$nbpiece', '', '$rand', '$conf', '$val', '$time', 'N', '$ipadresse', '$pho1', '$pho2', '$pho3', '$pho4', '$pho5')");
$sql1 = "SELECT id_for FROM form WHERE id_cat='$Typeann' ORDER BY id_for";
$sql2 = "SELECT id_ann FROM annonces WHERE ref_annonce_client='$ref'";
$sql3 = "SELECT id_for FROM form WHERE id_cat='$Typeann' ORDER BY id_for DESC";
$query1 = @mysql_query($sql1);
$query2 = @mysql_query($sql2);
$query3 = @mysql_query($sql3);
$id_for1 = result_to_array($query1);
$id_annform = result_to_array($query2);
$id_for2 = result_to_array($query3);
mysql_query("INSERT INTO valeurs (id_val, id_for, id_ann, val_for ) VALUES ( '', '$id_for1', '$id_annform', '$surf' )");
mysql_query("INSERT INTO valeurs (id_val, id_for, id_ann, val_for ) VALUES ( '', '$id_for2', '$id_annform', '$nbpiece' )")
or die("Erreur MySQL : ".mysql_error());
var_dump($id_for1[0]);
echo $id_for1;
print "<br>";
var_dump($id_annform[0]);
echo $id_annform;
print "<br>";
var_dump($id_for2[0]);
echo $id_for2;
print "<br><br><hr>";
?>
les "echo" donnent les bons résultats mais les INSERT ne se font pas.
|
|
mercredi 29 septembre 2010 à 17:28:17 |
Re : 2 requêtes SQL dans une autre requête.

neigedhiver
|
Je ne sais toujours pas à quoi ressemble ta base de données.
Et maintenant, tu utilises une fonction result_to_array() que je ne connais pas, je ne sais donc pas ce qu'elle retourne... Et tu n'indiques pas le résultat des var_dump().
Bref, je peux pas t'aider plus...
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
jeudi 30 septembre 2010 à 12:39:21 |
Re : 2 requêtes SQL dans une autre requête.

gnut
|
Pourquoi j'obtiens ça ( fichier : string(1) "." ) avec ça :
Code PHP :
$dir= "/homez.194/touslesb/www/ftpclient/wizzimmo";
$dh = opendir($dir);
while ($file = readdir($dh))
{
echo "fichier : "; var_dump($file);
|
|
jeudi 30 septembre 2010 à 13:51:57 |
Re : 2 requêtes SQL dans une autre requête.

neigedhiver
|
Parce que $file est une chaîne de caractères de longueur 1.
Lis la doc des fonctions readdir() et var_dump()...
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
jeudi 30 septembre 2010 à 14:54:53 |
Re : 2 requêtes SQL dans une autre requête.

gnut
|
En fait il me trouve un fichier . puis un .. puis mes fichiers (exemple.xml,... donc ceux-là sont bons).
Mais bien sûr si je veux traiter les fichiers je ne dois pas avoir les deux premiers . et ..
Je comprends pas là, j'ai regardé la doc mais...
merci neige.
|
|
vendredi 1 octobre 2010 à 10:54:15 |
Re : 2 requêtes SQL dans une autre requête.

Lyle56
|
C'est les fichiers "standards"
Dans tout les dossier tu à les fichier "." et ".."
Dans une fenêtre dos place toi sur un répertoire et fait cd ..
Tu verra alors le résultats ;)
Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
|
|
vendredi 1 octobre 2010 à 11:10:50 |
Re : 2 requêtes SQL dans une autre requête.

neigedhiver
|
Salut,
Ce n'est plus ton problème de départ...
Pour info, cette ligne est archi fausse :
Code PHP : while ($file = readdir($dh))
J'en ai marre de répéter ça sans cesse, mais bon sang, personne ne lit jamais la doc ?
"Doc PHP" a écritCette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE comme 0 ou "". Veuillez lire la section sur les booléens pour plus d'informations. Utilisez l'opérateur === pour tester la valeur de retour exacte de cette fonction.
C'est écrit dans un gros cadre rouge. Et le premier exemple donné pour cette fonction :
Code PHP : /* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
/* Ceci est la MAUVAISE façon de traverser un dossier. */
while ($file = readdir($handle)) {
echo "$file\n";
}
Mais bon, t'es pas le seul à faire cette erreur, je me demande simplement pourquoi tant de personnes la font... Vous apprenez PHP comment ? La doc ne sert donc à personne ? Elle est pourtant plus juste que les tutos trouvés ici ou là...
Bref, il suffit de vérifier que le nom du fichier est différent de '.' et '..'
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
vendredi 1 octobre 2010 à 15:58:44 |
Re : 2 requêtes SQL dans une autre requête.

gnut
|
Merci, j'ai découvert ça entre temps.
Enfin voilà ce qu'il me fallait pour lire les fichiers après les . et .. , je ne connaissais pas cette méthode " $count=0; if(...){$count++ }; " et la doc est très bien mais parfois complexe pour les débutants :
Code PHP :
<?php
$dir = "/homez..../.../.../.../dossier";
if($dh = opendir($dir))
{
$count=0;
while (false !== ($file = readdir($dh)))
{
if ($file != "." && $file != ".."){$count++;
$adressefile = $dir."/".$file;
////votre script en utilisant "$file" pour appeler vos fichiers
}}
}
closedir($dh);
?>
|
|
Cette discussion est classée dans : mysql, select, id, query, for
Répondre à ce message
Sujets en rapport avec ce message
## Où est l'erreur ???? bon diou !! [ par kodiask ]
voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que
sil vou plé où est l'erreur ? [ par kodiask ]
voilà g fai un système de citation au hazard et kanje met le code là il maffiche rien du tout , pourkoi ? merci ....mysql_select_db('cit_tbl',$db); $q
Ma Bdd 'clignote'... Fonctionne, fonctionne pas... [ par larrieu ]
Bonjour,Je suis un peu dépassé...Ma bdd sur mysql comprend une table annonce, des champs idannonce, sujet, message, pseudo (de l'auteur),mail (de l'au
Up-load de 2 photos [ par jaco13 ]
Bonjour!Voici le code de la page "ajoutvehicule1.inc.php" d'un site de voitures. La partie en noire est la partie avec la requête qui sert à insérer u
pb : Afficher le nombre de commentaire [ par punkcity ]
Bonjour, J'ai un petit (enfin un gros depuis le temps ou je suis dessus) problème. J'ai réalisé une page dynamique ou je recupere des info d'une table
Problème checkbox sur liste dynamique [ par ]
Bonjour, je suis bloqué sur un script, pourriez vous m'aider svp. j'ai une page choiximp.php qui extrait de ma base etiquettes table produits donc
requete sql assez complexe [ par sebmaster001 ]
bonjour à tous, je ne suis pas habitué à poster pour demander de l'aide, mais la, le temps presse... je vous remercie donc d'avance de l'aide que v
problème avec doublon dans ma classe de base de donnée [ par Dyr3e ]
bonjour, j'ai un problème de Doublon avec la classe pour les base de donnée que j'utilise. Je n'arrive pas a trouver d'ou cela viens mais j'obtiens su
Qqun voit un probleme dans ces lignes ? [ par Teclis01 ]
Voici le probleme: il m affiche que le premier nom correspondant a un id et les suivant non!Dans le tableau, j ai:-toutes les id-tous les recipients-A
Problème de MySQL -> auto-incrément et select derniere valeur d'une colonne [ par jcheseaux ]
Bonjour ! Je suis débutant en communication PhP MySQL mais j'apprend vite :-) mias la je sèche un peu alors j'espère que vous pourrez répondres à mes
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Forum
SELECTSELECT par hab2oo
Cliquez pour lire la suite par hab2oo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|