Enregistrements multiples

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 : Enregistrements multiples

par ouckileou » 23 févr. 2006, 13:53

oui, ou suivre la même méthode que pour les autres variables ($var = $_POST['var']), et faire ton explode sur $dir_out, mais sans redéclarer $dir_out comme tableau vide avec $dir_out = array() avant ;)

mais où est intervenu Alexbad ? Dois-je deviner que tu as posté ailleurs sur le même problème ? [-X

par Dom! » 23 févr. 2006, 00:02

Solution trouvée : ( grace à ALEXBAD ) :

Il fallait faire implode, sur $_POST[dir_out] et non sur $dir_out ...

C'etait si simple !

Merci pour ton aide ouckileou ! :wink:

par Dom! » 22 févr. 2006, 23:56

voici :
<?php
require_once('cagnes.php'); 
include ("conffile.php");

@ mysql_pconnect($hostname, $user, $passwd) or die ("Impossible de se connecter");
mysql_select_db($dbname);

$journee = $_POST['journee'];
$date = $_POST['date'];
$heure = $_POST['heure'];
$id_equipe = $_POST['id_equipe'];
$no_match = $_POST['no_match'];
$match_aller = $_POST['match_aller'];
$adomicile = $_POST['adomicile'];
$adversaire = $_POST['adversaire'];
$lieu = $_POST['lieu'];
$temps = $_POST['temps'];
$distance = $_POST['distance'];
$remarques = $_POST['remarques'];
$score_cag = $_POST['score_cag'];
$score_adv = $_POST['score_adv'];
$photo_p = $_POST['photo_p'];
$photo_g = $_POST['photo_g'];
$dir_out = $_POST['dir_out'];


  
  if ($journee == '')
  	$journee = 0;
	
  $dir_out= array();
  $temp = implode(",",$dir_out);

  $semaine = strtotime($date);
  $semaine = strftime("%W", $semaine);
 
  $sql_ajout = 'insert into tb_matchs values (0,'.$journee.',"'.$date.'","'.$heure.'",'.$id_equipe.',"'.$no_match.'",'.$match_aller.','.$adomicile.',"'.$adversaire.'","'.$lieu.'","'.$temps.'","'.$distance.'","'.$temp.'","'.$remarques.'","'.$score_cag.'","'.$score_adv.'","'.$photo_p.'","'.$photo_g.'",'.$semaine.')';
  $nbsql += 1;
  $result_ajout = mysql_query($sql_ajout) or die(mysql_error()); 
  $ecrire = 0;
 
 echo var_dump($dir_out);
 echo '<pre>'; 
print_r($_POST); 
echo '</pre>';  ?>

par ouckileou » 22 févr. 2006, 23:49

Reposte ton code, juste les parties relatives à ce problème :)

par Dom! » 22 févr. 2006, 23:31

Effectivement mon $temp est vide.... :cry:

grrrrrrrrrrr je vais chercher pourquoi si vous avez des idés ! merci

par ouckileou » 22 févr. 2006, 23:25

Exact je n'avais pas vu

Alors maintenant que tu vois que tu récupères bien $dir_out, mets des echos de contrôle pour vérifier ce que tu récupères dans $temp, le résultat du implode, et le SQL généré, tu verras bien où ça coince

par Dom! » 22 févr. 2006, 23:05

Dans ma requete INSERT j'utilise $temp pour enregistrer les données de dir_out ! puisque je dis $temp = $_POST['dir_out'] !

Est ce ca ?
  $sql_ajout = 'insert into tb_matchs values (0,'.$journee.',"'.$date.'","'.$heure.'",'.$id_equipe.',"'.$no_match.'",'.$match_aller.','.$adomicile.',"'.$adversaire.'","'.$lieu.'","'.$temps.'","'.$distance.'","'.$temp.'","'.$remarques.'","'.$score_cag.'","'.$score_adv.'","'.$photo_p.'","'.$photo_g.'",'.$semaine.')';

par ouckileou » 22 févr. 2006, 23:03

J'ai bien mes deux joueurs N° 261 et 24 !! Mais dans ma base je n'ai rien :cry: pourquoi ?
Parceque si j'en crois le code posté dans ton tout premier message, tu n'utilises pas le contenu de $dir_out dans ta requête INSERT...

tes infos ne vont pas s'enregistrer toutes seules :)

par Dom! » 22 févr. 2006, 22:20

Je suis sur ton post et voici ce qui s'affiche à l'écran :

Array
(
[journee] => 0
[no_match] => 12346
[date] => 2006-02-25
[heure] => 10H30
[id_equipe] => 44
[match_aller] => 1
[adomicile] => 1
[adversaire] => ESB
[lieu] =>
[temps] =>
[distance] =>
[dir_out] => Array
(
[0] => 261
[1] => 24
)

[remarques] =>
[score_cag] =>
[score_adv] =>
[photo_p] =>
[photo_g] =>
[Submit] => Ajouter convoc
)


J'ai bien mes deux joueurs N° 261 et 24 !! Mais dans ma base je n'ai rien :cry: pourquoi ?

par ouckileou » 22 févr. 2006, 01:15

oui c'était ça

mais tu as rajouté le $temp = $_POST['dir_out'] ??

fais :
echo '<pre>';
print_r($_POST);
echo '</pre>';
pour afficher brutes les infos transmises par POST, tu verras déjà si ton tableau est récupéré

par Dom! » 21 févr. 2006, 23:41

Bein oui j'ai une fonction :

function SelectionnerItems(form) {

zl = "dir_out[]";
lg = document.form1.elements[zl].options.length;

for (cpt = 0; cpt < lg; cpt++) {
document.form1.elements[zl].options[cpt].selected = true;
}

return( true );
}

c'est ca que tu me dis ? ou autre chose ?

Merci pour ton aide car je galére :roll:

par ouckileou » 21 févr. 2006, 23:34

Si je lis bien, quand tu cliques sur un "dir_in", ça rajoute une option dans "dir_out"

Mais est-ce que tu les sélectionnez ces options ? si tu ne les sélectionnes pas, rien ne sera transmis

par Dom! » 21 févr. 2006, 23:28

Ok nous sommes d'accord !

Mais le probleme c'est que je mets $dir_out=$_POST['dir_out']; et aucune valeur n'est transmise !

Dois je faire quelque chose dans le formulaire ??

par ouckileou » 21 févr. 2006, 23:21

on revient au début...
$dir_out = array(); // initialise $dir_out comme tableau vide
$temp = implode(",",$dir_out); // dans $temp rassemble les valeurs du tableau en les séparant par des virgules => pas de valeurs, pas de virgules
Il faut donc qe tu récupères ta variable $dir_out transmise par POST, comme les autres

par Dom! » 21 févr. 2006, 23:03

Le probleme c'est que j'ai plus de 300 personne dans dir_out !!!! donc les cases à cocher c'est difficile.

Maintenant pour que je comprenne bien la valeur de dir_out dans mon cas est "array" ce qui est normal puisque je met :
$dir_out = array();
Ensuite je dis :
  $temp = implode(",",$dir_out);
Pourquoi dans ce cas la quand je met echo $temp; rien ne s'écrit ?