Insertion d'un array dans une base de données

yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005 - 10 août 2005 à 13:55
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 - 11 août 2005 à 15:58
bonjour,

je voulais savoir s'il était possible d'inserer desx tableau dans une base de données?

Les deux tableaux à sont à inserer dans la meme table .



voici le code où je declare les tableaux

for ($k=1; $k<=$nblignes; $k++){

$valOS='';

if (!empty($_POST['case_os'][$k-1]))

$valOS=' value="'.$_POST['case_os'][$k-1].'"';

$valLib='';

if (!empty($_POST['case_libelle'][$k-1]))

$valLib=' value="'.$_POST['case_libelle'][$k-1].'"';



merci

20 réponses

cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
10 août 2005 à 14:01
Je ne pense pas qu'il existe de type de champ "array", mais tu peux exploder ton tableau (avec un séparateur que tu définit) dans un champ text et après, tu l'impode pour le reconstruire.

David, à VERSAILLES
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
10 août 2005 à 14:08
j'en suis a mes debuts en php et mysql et je ne comprend pas trop ce que tu as voulu dire...
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
10 août 2005 à 14:11
http://php.benscom.com/manual/en/function.implode.php:


<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

?> 
http://php.benscom.com/manual/en/function.explode.php


<CODE><?php
// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// Example 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?> 

Tu vois ou il veut en venir maintenant? 

</CODE>
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
10 août 2005 à 14:12
http://www.php.net/explode

http://www.php.net/implode



Sers-toi du site très utile :)



Ton array

array('bleh', 'rien');

tu le transformes en chaîne avec implode

bleh,rien

et après tu utilises explode pour revenir en array



(Attention à transformer par exemple tes , avant de faire l'implode,
sinon tu vas t'y perdre... ou sinon utilise un autre caractères (ou
d'autres caractères)

, EssayezTestez avant de Poser une question !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
10 août 2005 à 14:26
Merci je comprend mieux ce qui était expliqué.
Mais en fait je voudrai que sur une meme ligne les valeurs de $valOS et $valLib correspondent dans la base de données et donc je ne vois pas trop comment faire ca avec implode et explode
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
10 août 2005 à 14:29
euh, si c'est toujours la même chose tu fais simplement deux champs...

val1, val2

et dans val1 tu mets $valOS et dans val2 tu mets $valLib

...

, EssayezTestez avant de Poser une question !
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 14:30
Sinon, il y a aussi la fonction serialize...
http://fr2.php.net/manual/fr/function.serialize.php
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
10 août 2005 à 15:31
j'ai essayé la fonction serialize mais je pense que je dois mal l'utiliser...


$val1=serialize($valOS);
$val2=serialize($valLib);
$sql= "INSERT INTO formules values ('',$val1', '$val2')";
$req = mysql_query($sql) or die('erreur de modification');
la connexion avec la base étant deja effectuée
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
10 août 2005 à 15:44
C'est ta requête qui est un peu croche...

$sql = 'INSERT INTO formules VALUES(\''.$val1.'\',\''.$val2.'\')';

, EssayezTestez avant de Poser une question !
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 15:47
Tu peux utiliser serialize directement sur un tableau, dans ton cas, sur $_POST, mais je ne pense pas que ce soit ce qu'il te faut.

Me souvenant de ton formulaire, je pense que tu n'es pas tout à fait sur la bonne voie pour l'enregistrer dans une BD.
Quelle est la structure de la table formules où tu veux enregistrer tes OS et tes LIB ? Que veux-tu enregistrer précisement (qu'est-ce qui distingue un enregistrement d'un autre ?).

Arn;o)
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
10 août 2005 à 16:02
ma table formules contient les champs suivants:
id, valOS, valLib et mois_creation.
id est auto incrementé et mois_creation correspond au mois et année qui ont été selectionné au depart dans un menu deroulant.
et en fait je voudrai que valOS et valLib de la meme ligne prennent le meme id.
merci
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 16:25
En fait, il faut que tu fasses une boucle pour parcourir les lignes postées, et pour chaque ligne non-vide, tu exécutes la requête
$sql = 'INSERT INTO formules VALUES(\''.$_POST['case_os'][$k-1].'\',\''.$_POST['case_libelle'][$k-1].'\')';
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
10 août 2005 à 16:41
Il y a deja une boucle qui crée ces cases je ne peux pas faire la requete dans cette boucle?
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 16:50
a priori si, faut voir le reste du code...
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
10 août 2005 à 17:12
ca marche pas....j'ai rajouté if ((!empty($_POST['case_libelle'][$k-1])) && (!empty($_POST['case_os'][$k-1]))){
et j'ai tout mis dans la boucle de creation des cases.
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 17:33
Montre tout ton code tel qu'il est maintenant...
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
11 août 2005 à 09:29
Voila le code.


for($i=1; $i<$JourMax+1; $i++){

if ($jour>6){
$jour=0;
}
if ($jour==0){
$J='Di';
}
if ($jour==1){
$J='Lu';
}
if ($jour==2){
$J='Ma';
}
if ($jour==3){
$J='Me';
}
if ($jour==4){
$J='Je';
}
if ($jour==5){
$J='Ve';
}
if ($jour==6){
$J='Sa';
}
print "<td> ".$J."
".$i." </td>";
$jour++;
} ?>
</tr> <?php
for ($k=1; $k<=$donnees['nbre_entrees']; $k++){
$valOS='';
if (!empty($_POST['case_os'][$k-1]))
$valOS=' value="'.$_POST['case_os'][$k-1].'"';
$valLib='';

if (!empty($_POST['case_libelle'][$k-1]))
$valLib=' value="'.$_POST['case_libelle'][$k-1].'"';
echo '<tr>
<td width="12%" >
[javascript:popup(\'os.php\') OS :]

</td>
<td width="15%">
[javascript:popup(\'libelles.php\') Libel]

</td>';

if ((!empty($_POST['case_libelle'][$k-1])) && (!empty($_POST['case_os'][$k-1]))){
$sql = 'INSERT INTO formules VALUES(\''.$_POST['case_os'][$k-1].'\',\''.$_POST['case_libelle'][$k-1].'\')';
$req = mysql_query($sql) or die('erreur de modification');
}
// affichage des textbox où l'utilisateur remplit les temps de travail
for($l=1; $l<=$JourMax; $l++){
$val='';
if (!empty($_POST['calendrier'][$i-1]))
$val='value="'.$_POST['calendrier'][$i-1].'"';
echo '<td width="6%">

</td>';

} $i++;
}
?>
</tr></table>

</form>

Par rapport a la derniere fois je n'ai pas pu garder les fonctions pour les jours cela ne marchait pas avec une autre fonctionnalité que j'avais inseré.
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
11 août 2005 à 14:40
Et bien, ça à l'air de marcher ! où est le problème ?

Au fait, je ne comprends pas pourquoi tu ne peux plus utiliser les fonctions pour les jours, il n'y a pas de raison... enfin ce n'est pas grave. Si tu veux faire comme ça, utilise au moins l'instruction "switch case" plutôt que cette série de "if"
http://www.php.net/manual/fr/control-structures.switch.php

switch ($jour) {
case 0 : $J='Di'; break;
case 1 : $J='Lu'; break;
case 2 : $J='Ma'; break;
case 3 : $J='Me'; break;
case 4 : $J='Je'; break;
case 5 : $J='Ve'; break;
case 6 : $J='Sa'; break;
}
0
yravas Messages postés 44 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 25 août 2005
11 août 2005 à 15:53
ca marche. merci encore
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
11 août 2005 à 15:58
Content d'avoir pu t'aider
0
Rejoignez-nous