Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1794 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  probleme boucle... grosse boucle... voir probleme à la fin

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme boucle... grosse boucle... voir probleme à la fin

n°1316694
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 01:42:40  profilanswer
 

voila je fais une boucle pour rechercher des enregistrements que j'appelle $machin, ensuite je cree une table du nom de $machin puis je colle tous les enregistrements dans cette nouvelle table or ca plante
 
Ce fichier est inclus dans un autre qui cherche la variable $machin

Citation :


<?
 
 echo $machin;
 $sql = mysql_query(" CREATE TABLE `basededonnees`.`$machin` (`date` timestamp NOT NULL ,`insertion` varchar( 20 ) NOT NULL default '',`type` varchar( 25 ) NOT NULL default '',`motcle` varchar( 255 ) NOT NULL default '',`description` varchar( 255 ) NOT NULL default '',`match` varchar( 255 ) NOT NULL default '',`truc` smallint( 2 ) NOT NULL default '0',`url` varchar( 250 ) NOT NULL default '',UNIQUE KEY `url` ( `url` ) ) ENGINE = MYISAM DEFAULT CHARSET = utf8 " )  or die("yyy".mysql_error() );
   { // SELECTION ORIGINE
   $origine = " SELECT *  FROM `moteur` WHERE `description` LIKE '%$machin%' OR `match` LIKE '%$machin%' OR `motcle` LIKE '%$machin%' ";
   $truc = mysql_query($origine,$link)  or die("xxx".mysql_error() );
   while($row = mysql_fetch_row($truc)) // ICI CA PLANTE
    {
    $date = $row["date"];
    echo $date;
    $insertion = $row["insertion"];
    $type = $row["type"];
    $motcle=$row["motcle"];
    $description = $row["description"];
    $match = $row["match"];
    $truc = $row["truc"];
    $url = $row["url"];
    $sql = mysql_query("INSERT INTO `$machin` (`date` , `insertion` , `type` , `motcle` , `description`, `match`,  `truc` , `url`) VALUES (  '$date', '$insertion', '$type', '$motcle', '$description', '$match', '$truc', '$url')" );
    }
   }
?>
 


 
Voici le message d'erreur :
cartoon
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/sdb/3/8/HOST/TRANSFERT.php on line 8
 
Je sèche là...
Pouvez m'aider ?
 
Merci


Message édité par erwan83 le 02-03-2006 à 19:37:24

---------------
http://www.ypikay.com
mood
Publicité
Posté le 02-03-2006 à 01:42:40  profilanswer
 

n°1316941
newneo2001
Posté le 02-03-2006 à 13:45:24  profilanswer
 

essaie mysql_fetch_array


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1316960
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-03-2006 à 14:00:44  profilanswer
 

et comment tu initialises $truc?
 
parce que l'erreur est quand même assez parlante ...

n°1317000
dwogsi
Défaillance cérébrale...
Posté le 02-03-2006 à 14:29:30  profilanswer
 

et mysql_error(); il dit quoi??

n°1317025
Sh@rdar
Ex-PhPéteur
Posté le 02-03-2006 à 14:43:24  profilanswer
 

et le plus simple ça serait de faire ça sans boucle avec une seul requête
 
INSERT INTO monautretable SELECT ... FROM matable
 
voir http://dev.mysql.com/doc/refman/5. [...] elect.html :)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1317042
soju
One shot !
Posté le 02-03-2006 à 14:57:08  profilanswer
 

Code :
  1. $truc = $row["truc"];


et tu utilises $truc avec mysql_fetch_row...
utilise un autre variable.
 
et au lieu de faire $champ = $row['champ'] essaye la fonction http://fr.php.net/extract tu gagneras 7 lignes

n°1317044
newneo2001
Posté le 02-03-2006 à 14:59:30  profilanswer
 

anapajari > là l'erreur elle lui dit que ce qu'il passe en argument n'est pas valide. Donc c'est que la réponse de sa requête n'est pas valide.
 
déjà il n'y a qu'un argument à mysql_fetch_row()
ensuite avec fetch row ca te renvoit un tableau et tu dois écrire $row[1]
 
pour associé avec le nom de ton champ c fetch_array ou fetch_assoc.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1317055
soju
One shot !
Posté le 02-03-2006 à 15:15:27  profilanswer
 

newneo2001 a écrit :

Donc c'est que la réponse de sa requête n'est pas valide.

si la requete n'était pas valide le script s'arreterait avec le die, c'est $truc qui n'est pas valide après la première itération du while.
sinon tu as raison pour le reste (fetch_array)

n°1317058
Sh@rdar
Ex-PhPéteur
Posté le 02-03-2006 à 15:18:54  profilanswer
 

avec le SELECT INSERT il serait quand même moins emmerdé, et c'est autrement plus rapide qu'une boucle dégueulasse de requêtes..


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1317059
newneo2001
Posté le 02-03-2006 à 15:19:44  profilanswer
 

oui j'avais pas vu le die.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
mood
Publicité
Posté le 02-03-2006 à 15:19:44  profilanswer
 

n°1317060
soju
One shot !
Posté le 02-03-2006 à 15:20:24  profilanswer
 

Sh@rdar a écrit :

avec le SELECT INSERT il serait quand même moins emmerdé, et c'est autrement plus rapide qu'une boucle dégueulasse de requêtes..

on est bien d'accord, mais la plupart des hebergeurs sont encore à la version 3 de mysql

n°1317062
Sh@rdar
Ex-PhPéteur
Posté le 02-03-2006 à 15:22:20  profilanswer
 

soju a écrit :

on est bien d'accord, mais la plupart des hebergeurs sont encore à la version 3 de mysql


 
ça marche avec une version 3, c'est même la base pour copier une table


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1317067
soju
One shot !
Posté le 02-03-2006 à 15:27:37  profilanswer
 

Sh@rdar a écrit :

ça marche avec une version 3, c'est même la base pour copier une table

oups j'aurais mieux fait de me taire :jap:  

n°1317261
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 18:08:58  profilanswer
 

anapajari a écrit :

et comment tu initialises $truc?
 
parce que l'erreur est quand même assez parlante ...


 

Citation :

$origine = " SELECT *  FROM `moteur` WHERE `description` LIKE '%$machin%' OR `match` LIKE '%$machin%' OR `motcle` LIKE '%$machin%' ";  
   $truc = mysql_query($origine,$link)


 
voila...


---------------
http://www.ypikay.com
n°1317268
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 18:13:25  profilanswer
 

OH LA LA OH LALA
Bon je me vois dans l'obligation de donner qques explications
 
Pour newneo2001:
dans cette requete :
$origine = " SELECT *  FROM `moteur` WHERE .......
les reponses existent

 
pour Sh@rdar  
(avec le SELECT INSERT  ...)
aurais tu un exemple d'utilisation ?
 
SINON BEN...
l'erreur ne vous dit toujours rien ?


---------------
http://www.ypikay.com
n°1317272
newneo2001
Posté le 02-03-2006 à 18:16:07  profilanswer
 

erwan83 > $origine = " SELECT *  FROM `moteur` WHERE .......
les reponses existent  
 
oui elles existent mais elle ne sont pas associées à un tableau comme tu le demandes apres. Tu as qu'à remplacer ton fetch_row déjà


Message édité par newneo2001 le 02-03-2006 à 18:17:38

---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1317273
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 18:17:10  profilanswer
 

bon je vais remplacer le fetch row par fetch array alors
Vroummmmmmm
je vous tiens au courant


---------------
http://www.ypikay.com
n°1317279
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 18:22:25  profilanswer
 

avec fetch array ca donne ca :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource .....


---------------
http://www.ypikay.com
n°1317290
Sh@rdar
Ex-PhPéteur
Posté le 02-03-2006 à 18:28:52  profilanswer
 

le INSERT SELECT c'est pas bien compliqué
 
c'est jamais qu'un SELECT standard, sauf que les lignes retournées seront insérées dans l'autre table [:spamafote]
 
l'exemple le plus simple
 
INSERT INTO Table2 (Id,bidule) SELECT Id,Truc FROM Table1
 
sachant que sur la partie select tu peux faire tout ce que tu veux comme un select normal (jointures, conditions etc)


Message édité par Sh@rdar le 02-03-2006 à 18:30:11

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1317293
newneo2001
Posté le 02-03-2006 à 18:31:21  profilanswer
 

bizarre car si le retour n'est pas bon c'est que ca vient de ta requete mais si ca venait de ta requete ca serait bloqué apres le die().
 
Il faudrait revoir un peu ton code et ce qu'il y a tes tables
 
Mais si c'est pour recopier une DB alros regarde du coté de SELECT INSERT comme te l'as dit Sh@rdar


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1317294
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 18:32:25  profilanswer
 

suis entrain d'experimenter le INSERT SELECT...


---------------
http://www.ypikay.com
n°1317304
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 18:44:22  profilanswer
 

Le code

Citation :

$sql = mysql_query(" SELECT * FROM `moteur` WHERE `description` LIKE '%$machin%' OR `match` LIKE '%$machin%' OR `motcle` LIKE '%$machin%' INSERT INTO `$machin` " )  or die("xxx".mysql_error() );


 
L'erreur

Citation :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO `cartoon`' at line 1...


 
Heu...


---------------
http://www.ypikay.com
n°1317314
Sh@rdar
Ex-PhPéteur
Posté le 02-03-2006 à 19:02:56  profilanswer
 

pas le bon ordre (ok on s'est confusés un peu mais y'a une doc hein :o)
 
INSERT INTO .. SELECT


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1317315
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 19:04:19  profilanswer
 

Arghhhh (rxpression d'un cri rauqye et gloque)
Justement m'en suis rendu compte.
Suis entrain de retablir tout ça


---------------
http://www.ypikay.com
n°1317334
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 19:35:24  profilanswer
 

J'en suis où ?
 
le code

Citation :

$sql = mysql_query(" INSERT INTO `$machin` (`url` , `description` , `motcle`) SELECT (`url` , `description` , `motcle`) FROM `moteur` WHERE blablabla" )  or die("xxx".mysql_error() );


l'erreur

Citation :

Operand should contain 1 column(s)


explication de la doc

Citation :

Message = "Operand should contain 1 column(s)"
 
This error will occur in cases like this:  
SELECT (SELECT column1, column2 FROM t2) FROM t1;
 
It's okay to use a subquery that returns multiple columns, if the purpose is comparison. See section 6.4.2.7 Row Subqueries. But in other contexts the subquery must be a scalar operand.


---------------
http://www.ypikay.com
n°1317346
smaragdus
whores, drugs & J.S. Bach
Posté le 02-03-2006 à 20:04:21  profilanswer
 

Si tu crées la table juste avant d'inserer tes lignes, tu as la solution du CREATE TABLE ... SELECT

n°1317350
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 20:07:42  profilanswer
 

Heu... mais si qu'elqu'un pouvait m'expliquer le pourquoi de l'erreur...
pourquoi in ne veut pas plus d'une colonne et ou se trouve le probleme ?
J'y suis presque mais je patine à vide


---------------
http://www.ypikay.com
n°1317405
Sh@rdar
Ex-PhPéteur
Posté le 02-03-2006 à 22:03:08  profilanswer
 

bon, alors copier coller du vrai code plus structure de la base :o
 
ton select il retourne quelque chose au moins ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1317406
erwan83
Du Shift DEL tu te méfieras !
Posté le 02-03-2006 à 22:05:40  profilanswer
 

Sh@rdar a écrit :

bon, alors copier coller du vrai code plus structure de la base :o
 
ton select il retourne quelque chose au moins ?


ben oui... encore heureux


---------------
http://www.ypikay.com
n°1317574
anapajari
s/travail/glanding on hfr/gs;
Posté le 03-03-2006 à 09:43:43  profilanswer
 

c'est dans ta requete l'erreur, il ne faut pas de parenthèses autour des champs de ton select:

Code :
  1. INSERT INTO `$machin` (`url` , `description` , `motcle`) SELECT `url` , `description` , `motcle` FROM `moteur` WHERE blablabla


n°1319136
erwan83
Du Shift DEL tu te méfieras !
Posté le 05-03-2006 à 21:53:54  profilanswer
 

Merci merci
je reviens de WE je vais essayer ca tout de suite


---------------
http://www.ypikay.com
n°1319139
erwan83
Du Shift DEL tu te méfieras !
Posté le 05-03-2006 à 22:01:10  profilanswer
 

BINGO Ca marche
Merci à tous !!!


---------------
http://www.ypikay.com
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  probleme boucle... grosse boucle... voir probleme à la fin

 

Sujets relatifs
Problème CSS entre IE et Firefox[RESOLU]probleme de recuperation des lignes d'une requete mysql
probleme pour vérifier cochage de cases radioProblème avec Win 2000 et script de config de proxy automatique
[Résolu] Problème sur Dreamweaver pour formulaireLe problème vient d'Apache ou de PHP ?
probléme d'affichage de la date[Résolu] Problème pour un INSERT INTO d'une base vers une autre
[DataSet to Xml]Probleme si champs vaut nullprobleme lecture audio sur forum
Plus de sujets relatifs à : probleme boucle... grosse boucle... voir probleme à la fin


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR