Problème affichage résultat [PHP]

Résolu/Fermé
Kitty-cat
Messages postés
141
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
6 août 2008
- 28 déc. 2007 à 11:53
Kitty-cat
Messages postés
141
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
6 août 2008
- 28 déc. 2007 à 13:58
Bonjour à vous, chers ccmistes.

Je vous demande de l'aide suite à un problème d'affichage de résultats d'un mysql_fetch_array(). En effet, alors que je l'utilise comme je le fais tout le temps d'habitude, ce couillon oublie toujours de m'envoyer un résultat, en l'occurence mon premier résultat. Il prend ensuite les autres correctement. C'est ma foi un peu gênant, car je souhaiterais utiliser les résultats récupérés pour faire ensuite une requête de delete. Or s'il me manque un des fichiers à supprimer, ca peut etre gênant (Je n'ai pas encore codé la partie du delete par contre).

Voici le code :

[code]

<?php
session_start();

$dsn='localhost';
$username='root';
$password='';


$sqlconnect=mysql_connect($dsn,$username,$password);

mysql_select_db('Intranet',$sqlconnect);


$tab = array();
$resultat = array();

foreach($_POST as $key => $value)
{
array_push($tab,$value);
}

$select = " select NomOriginalFichier From IdFich ";

$counttab = count($tab);

if ($counttab == 1) {
$where = " where idfichiers = ".$tab[0]."";
}
else {
$where = " where idfichiers = ".$tab[0]."";
for ($i=0;$i<=($counttab - 1);$i++) {
$where .= " or idfichiers = ".$tab[$i]."";
}
}



$select .= $where;

$res = mysql_query($select);
$resultat = mysql_fetch_array($res);

$NomFichier = array();

while($resultat=mysql_fetch_array($res)){
array_push($NomFichier, $resultat['NomOriginalFichier']);
}

echo $NomFichier[0];
echo "<br />";
echo $NomFichier[1];

?>

[/code]

Cela fait bien une heure que je cherche la solution au problème, mais pour l'instant rien n'a marché. Je vais continuer à chercher, mais j'espère, si d'aventure je ne trouvais pas, que l'un de vous saura m'aider à corriger. D'avance, je vous remercie.

Cordialement,

Kitty-Cat

5 réponses

Christounet
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 374
28 déc. 2007 à 12:08
Bonjour,

Je pense que le code suivant n'est pas correct

else { 
$where = " where idfichiers = ".$tab[0].""; 
for ($i=0;$i<=($counttab - 1);$i++) { 
$where .= " or idfichiers = ".$tab[$i].""; 
} 


en effet, ta boucle For devrait commencer avec la valeur $i=1 car tu as déjà utilisé l'élement 0 de ton array

else { 
$where = " where idfichiers = ".$tab[0].""; 
for ($i=1;$i<=($counttab - 1);$i++) { 
$where .= " or idfichiers = ".$tab[$i].""; 
} 


A plus et Joyeuses Fêtes
0
Kitty-cat
Messages postés
141
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
6 août 2008
10
28 déc. 2007 à 12:38
Pas bête effectivement.

Mais la requête renvoyée, marche si on teste sous mysql directement.
0
Christounet
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 374
28 déc. 2007 à 12:54
Rebonjour

As-tu déjà essayè avec le code suivant

$NomFichier = array();

$res = mysql_query($select);

if(mysql_num_rows($res))
{
  while($resultat = mysql_fetch_assoc($res))
  {
    array_push($NomFichier, $resultat['NomOriginalFichier']); 
  }
}


ou sinon celà
$NomFicher = array();

$resultat = mysql_fetch_array($res);

array_push($NomFichier, $resultat['NomOriginalFichier']);

while($resultat=mysql_fetch_array($res))
{ 
  array_push($NomFichier, $resultat['NomOriginalFichier']); 
} 


De cette façon tu sauves aussi ton premier $resultat

A plus
0
Bonjour,

à la place de:

$tab = array();
$resultat = array();

foreach($_POST as $key => $value)
{
array_push($tab,$value);
}

$select = " select NomOriginalFichier From IdFich ";

$counttab = count($tab);

if ($counttab == 1) {
$where = " where idfichiers = ".$tab[0]."";
}
else {
$where = " where idfichiers = ".$tab[0]."";
for ($i=0;$i<=($counttab - 1);$i++) {
$where .= " or idfichiers = ".$tab[$i]."";
}
}
$select .= $where;


simplifies et mets:

$tab = array();

foreach($_POST as $key => $value)
{
array_push($tab,$value);
}

$select = "SELECT NomOriginalFichier FROM IdFich WHERE ";

for ($i=0;$i<sizeof($tab);$i++) {
	if($i>0){ $where .=" OR ";}
	$where .= "idfichiers = ".$tab[$i]."";
}

$select .= $where;



Ca réglera ton pb de premiere ligne extraite.

Le foreach($_POST...
n'est pas trop réglo car tu empile dans ton array tout ce que t'envoie le formulaire y compris le bouton Submit
0

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

Posez votre question
Kitty-cat
Messages postés
141
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
6 août 2008
10
28 déc. 2007 à 13:58
Merki, ca a résolu mon problème ^^.

Pour le foreach, je sais qu'il n'est pas très réglo, mais je n'ai pas utilisé de submit, et je l'utilise simplement pour récupérer l'id des cases à cocher qui sont cochées justement.
0