Se connecter avec
S'enregistrer | Connectez-vous

RESOLU (PHP/MySQL) Probleme syntaxe...

Dernière réponse : dans Programmation

Bonjour, je vais vous montrer mon code ( pris sur internet et modifié pour qu'il soit adapté a mes besoins). Ma page s' appelle resultat.php, le resultat s' affiche sur la meme page.
Ma base de donnée: essai
login: root
mdp: (aucun)
table concernée: unites_tbl

Citation :

<select name="nom"> <form method="post" action="resultat.php">

<?php
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");


mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');
$sql = 'SELECT * FROM unites_tbl';
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( !$nb[0] ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value="'.$list['nom'].'">'.$list['nom'].'</option>';
}
}
mysql_close();
?>
</select>
<input type="submit" value="OK">

<?php
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');
$sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb>0 ) {
echo 'Aucun noms d\' unité connu';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
}
}
mysql_close();
?>


Sa cré un menu déroulant ou ( normalement ) s' affiche le nom de l' unité contenu dans cette table: unites_tbl :

id nom PV Attaque BonusATQ BonusDEF
1 grenadier 200 20 50 10
2 cavalier 245 15 15 80
3 indigene 420 40 1 10
4 indien 40 100 50 100

Mais le probleme, c'est que le code ne trouve pas ma colonne "nom" et m' affiche : Aucun nom dans le menu déroulant. Je ne trouve pas l' erreur, qqun peut m' aider?

PS: dsl si le script est vraiment pourri car je debute la dedans, et je vois pas du tout ou sa plante
Lassé par la pub ? Créez un compte

Salut,

Pour commencer regarde ton test : if ( !$nb[0] ) {
Effectivement si tu as des resultats tu affiche aucun nom :/  hors c le contraire que tu fais :) 
Ton change le par if ( $nb == 0 ) {

Ensuite essaye de mieux structurer ton code, pour un debutant c deja pas mal, mais c'est pour eviter de te melanger.

Citation :

<?
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");

//connexion à la BD
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');?>

<form method="post" action="resultat.php">
<select name="nom">
$sql = 'SELECT * FROM unites_tbl';
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value="'.$list['nom'].'">'.$list['nom'].'</option>';
}
}
mysql_close();
?>
</select>
<="submit" value="OK">

Je te remercie, je mettrais des notes sur mon script ^^

bon j' ai sa:

Citation :


<select name="nom"> <form method="post" action="resultat.php">

<?php
//parametrage
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");
$table =("unites_tbl");

//connexion BdD
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');


$sql = " SELECT * FROM $table ";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value="'.$list['nom'].'" </option>';
}
}

//deco
mysql_close();
?>
</select>
<input type="submit" value="OK">

<?php

//connexion
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');

$sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb>0 ) {
echo 'Aucun noms d\' unité connu';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
}
}

//deco
mysql_close();
?>

mais maintenant dans me menu déroulant, ya rien qui s' affiche ( meme plus Aucun nom )... Help please


Yahooooooooo sa marche merci

Ya juste un bug, je selectionne mon item dans le menu déroulant, et quand je met ok, ba rien de s' affiche...

j' avais jamais utilisé les menu de ce genre avant, la je m' y connias pas mais je cris que sa vient de :

<select name="nom"> <form method="post" action="resultat.php">

blablabla

<i n p u t t y p e ="submit" value="OK"> ( dsl mais sa s' affiche pas sur le fofo autrement )
</select>

encore un poil d' aide svp...vraiment dsl

Ba en fait non sa marche pas, j' ai bien la liste, le boutton Ok fonctionne bien, mais quand j' appelle la page resultat1.php, ( j' ai coupé le code en 2 ) cette page m' affiche tjr: Aucun noms d' unité connu

c'est le msg d' erreur si ya rien, hors le nom de l' unité existe, mais sa m' affiche pas ses stats...

encore vraiment dsl de l' aide que je vous demande

PS: ma table unites_tbl:

id nom PV Attaque BonusATQ BonusDEF
1 grenadier 200 20 50 10
2 cavalier 245 15 15 80
3 indigene 420 40 1 10
4 indien 40 100 50 100


Voila alors sur la page résultat.php ( script principal )

Citation :

<form method="post" action="resultat1.php">
<select name="nom">


<?php

//paramètres
$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");
$table =("unites_tbl");


//connection BdD
mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');

$sql = " SELECT * FROM $table ";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo '<option>Aucun nom</option>';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
echo '<option value=\"' .$list['nom'].' \">' .$list['nom'].' </option>';

}
}

//fermeture base
mysql_close();
?>
<input type="submit" value="OK">
</select>


Page resultat1.php appelé par resultat.php:

Citation :

<?php

$db =("essai");
$serveur =("localhost");
$user =("root");
$pass =("");
$table =("unites_tbl");

mysql_connect($server, $user, $pass) or die('Erreur de connexion');
mysql_select_db($db) or die('Base inexistante');
$sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";
$query = mysql_query($sql) or die( 'Erreur' );
$nb = mysql_num_rows($query);
if ( $nb == 0 ) {
echo 'Aucun noms d\' unité connu';
} else {
while ( $list = mysql_fetch_array( $query ) ) {
}
}
mysql_close();
?>



Voila, ma table unites_tbl contenue dans la base de donnée essai:

http://img436.imageshack.us/img436/5069/table34te.jpg" alt="" class="imgLz frmImg" />

Voila voilou le dossier complet

C'est aps aprce que ca amrche que c'est bien ;) 

Désolé mais ton bouton a pas à être dans ton select...

Sinon pourquoi tu as un ";" avant le dernier dans :

  1. $sql = "SELECT * FROM unites_tbl WHERE nom = '".$_POST['nom']."';";


Sinon Avant toute chose tu fais un
  1. $nom=$_POST['nom'];
  2. echo $nom;


et tu vois la valeur qu'il te renvoit ;) 

En fonction de ca tu peux voir d'où vient le problème...

voila, j' ai remis les balise dans l' ordre, et j' ai rajiouté ton bout de code, sur la page de résultat il s ' affiche:

Citation :
Aucun nom d' unité connu\\\"indigene


ou indigène est le nom de l' unité que l' on a selectionné dans la liste.

Forcément :nono:

Remplace ca :

  1. echo '<option value=\"' .$list['nom'].' \">' .$list['nom'].' </option>';


Par ca :

  1. echo '<option value="' .$list['nom'].' ">' .$list['nom'].' </option>';


dans ta page d'affichage des resultat.php je crois...

Ok, j' ai essayer d' uncorporer les autres, mais a chaque fois il me met:

Citation :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in C:\wamp\www\essai\resultat.php on line 24


je sais pas comment ecrire avec $list , le reste oui
Lassé par la pub ? Créez un compte
Tom's guide dans le monde