foreach avec insert (mysql)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : foreach avec insert (mysql)

Re: foreach avec insert (mysql)

par stealth35 » 06 juil. 2010, 10:37

he llo, merci pour votre aide.
Je viens de trouver.
C'était simple :

$test=array('sdis01','sdis02');
$test2=array('http://www.sdis01.fr/','http://www.sdis02.fr/');

$max = count( $test );

$i=0;
while($i<$max)
{


$sql="INSERT INTO tx_avotherresources_res (tstamp,crdate,cruser_id,deleted,hidden,cat,name,res,description,author,email,alertemail,visits,rating,ratingnr) VALUES ('1278336036','1278336036','0','0','0','8','".$test[$i]."','".$test2[$i]."','','','','0','0','0','0')";

mysql_query($sql);
echo $sql."<br />";
print_r($test);
$i++;

}

sur un tableau c'est plus simple d'utiliser un foreach, tu peux aussi utiliser les tableau a plusieurs dimensions, au niveau de ta requete si ta base est bien faites tu peux juste rentré les valeurs de "name" et "res" les autres étant par défaut
	
$test = array(
    array('name' => 'sdis01', 'res' => 'http://www.sdis01.fr/'),
    array('name' => 'sdis02', 'res' => 'http://www.sdis02.fr/'),
);
		
foreach($test as $item)
{
    $data = array_map('mysql_escape_string', $item);
    $sql  = vsprintf("INSERT INTO `tx_avotherresources_res` (`name`, `res`) VALUES ('%s', '%s')", $data);
    //mysql_query($sql) or exit($sql . ' ' . mysql_error());
    echo $sql . PHP_EOL;
}

/*
INSERT INTO `tx_avotherresources_res` (`name`, `res`) VALUES ('sdis01', 'http://www.sdis01.fr/')
INSERT INTO `tx_avotherresources_res` (`name`, `res`) VALUES ('sdis02', 'http://www.sdis02.fr/')
*/


:wink:

Re: foreach avec insert (mysql)

par slave » 06 juil. 2010, 10:24

he llo, merci pour votre aide.
Je viens de trouver.
C'était simple :

$test=array('sdis01','sdis02');
$test2=array('http://www.sdis01.fr/','http://www.sdis02.fr/');

$max = count( $test );

$i=0;
while($i<$max)
{


$sql="INSERT INTO tx_avotherresources_res (tstamp,crdate,cruser_id,deleted,hidden,cat,name,res,description,author,email,alertemail,visits,rating,ratingnr) VALUES ('1278336036','1278336036','0','0','0','8','".$test[$i]."','".$test2[$i]."','','','','0','0','0','0')";

mysql_query($sql);
echo $sql."<br />";
print_r($test);
$i++;

}

Re: foreach avec insert (mysql)

par macgawel » 05 juil. 2010, 17:44

ouai,
donc ça me donne ça
Array ( [0] => Array ( [0] => sdis01 [1] => http://www.sdis01.fr/ [2] => sdis02 [3] => http://www.sdis02.fr/ ) )

faut pas faire un tableau à 2 dimensions ?
Si, mais il ne faut pas y mettre n'importe quoi #-o
Tu peux affiner en faisant un print_r de $data, histoire de voir le contenu.
Mais je peux déjà te le dire :
Premier passage dans le foreach :
$data = Array ( [0] => sdis01 [1] => http://www.sdis01.fr/ [2] => sdis02 [3] => http://www.sdis02.fr/ )

Deuxième passage... Il n'y en a pas !
Organise tes données :
$test[0]= les données nécessaires au premier passage.
$test[0][0] = 'sdis01'
$test[0][1] = 'http://www.sdis01.fr/'
$test[0] = Array('sdis01', 'http://www.sdis01.fr/')
$test[1] = les données nécessaires au deuxième passage.
$test[1][0] = 'sdis02'
$test[1][1] = 'http://www.sdis02.fr/'

Re: foreach avec insert (mysql)

par Invité » 05 juil. 2010, 17:31

ouai,
donc ça me donne ça
Array ( [0] => Array ( [0] => sdis01 [1] => http://www.sdis01.fr/ [2] => sdis02 [3] => http://www.sdis02.fr/ ) )

faut pas faire un tableau à 2 dimensions ?

Re: foreach avec insert (mysql)

par macgawel » 05 juil. 2010, 17:23

alleiluia ! tanxx
mais ça m'insère qu'une ligne avec name =sdis01 et res=http://www.sdis01.fr/
mais ça fait pas le foreach comme je pensais.. je voulais que ça continue l'insertion avec name =sdis02 et res=http://www.sdis02.fr/ ..?.. #-o
Là, c'est un problème avec ton array...

Fais un print_r($test); pour voir la tête que ça a, et compare avec ce que ça devrait être...
En fait, avec un foreach, $data vaut $test[0], puis $test[1], etc.
Et comme tu veux avoir $data[0] = 'sdis0.', $data[1] = 'http://...' tu peux remonter et voir ce que tu devrais avoir dans $test...

Re: foreach avec insert (mysql)

par Invité » 05 juil. 2010, 17:09

alleiluia ! tanxx
mais ça m'insère qu'une ligne avec name =sdis01 et res=http://www.sdis01.fr/
mais ça fait pas le foreach comme je pensais.. je voulais que ça continue l'insertion avec name =sdis02 et res=http://www.sdis02.fr/ ..?.. #-o

Re: foreach avec insert (mysql)

par ouckileou » 05 juil. 2010, 16:49

Supprime les apostrophes autour des noms de colonne.

Re: foreach avec insert (mysql)

par Invité » 05 juil. 2010, 16:42

merci stealth35,
j'ai une erreur de synthaxe que j'arrive pas à trouver :

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 ''tstamp','crdate','cruser_id','deleted','hidden','cat','name','res','description' at line 1

quand je echo $sql :
INSERT INTO tx_avotherresources_res ('tstamp','crdate','cruser_id','deleted','hidden','cat','name','res','description','author','email','alertemail','visits','rating','ratingnr') VALUES ('1278336036','1278336036','0','0','0','8','sdis01','http://www.sdis01.fr/','','','','0','0','0','0')
je vois voit pas l' erreur la dedans ??!!

Re: foreach avec insert (mysql)

par stealth35 » 05 juil. 2010, 16:07

juste ca devrai suffire
$test[] = array(.....

foreach avec insert (mysql)

par slave » 05 juil. 2010, 16:04

salut tous(tes),
j'essaye d'insérer des données d'un tableau dans ma base.
Le truc c'est que j'ai deux infos à rentrer à chaque fois : le titre et le lien
j'ai fais ça et mais ça pas l'air très catholique, qlq me filerait un pti coup clic ? :priere: :priere: :priere:

$test[][]=array('sdis01','http://www.sdis01.fr/','sdis02','http://www.sdis02.fr/');

foreach($test as $data){

$sql="INSERT INTO tx_avotherresources_res ('tstamp' , 'crdate' , 'cruser_id' , 'deleted' , 'hidden' , 'cat' , 'name' , 'res' , 'description' , 'author' , 'email' , 'alertemail' , 'visits' , 'rating' , 'ratingnr' )
VALUES (
'1278336036', '1278336036', '0', '0', '0', '8', '".$data[0]."', '".$data[1]."', '', '', '', '0', '0', '0', '0')";
mysql_query($sql);

}