[PHP] je recommence à zéro....

Résolu/Fermé
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 13 févr. 2007 à 23:48
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 19 févr. 2007 à 07:28
Bon, je recommence tout à zéro.
J'ai créé une table avec 4 champs (id, nom, editeur et comment).
Jusque la OK.
En cliquant sur catalogue, j'affiche une liste (pour le moment elle s'appelle succinte car en cliquant sur le lien Editer, on doit afficher la fiche complète avec 23 champs au total) mais pour le moment je n'affiche que 3 champs.
C'est là qu'est le premier Pb: Ils devraient etre renseignés (le contenu devant correspondre au lien cliqué dans le tableau précédent.
Je ne comprends pas ce "vide".

Si je met
<input TYPE="text" name="nom" value="<? echo mysql_query($query="nom") ?>" SIZE="50">
ça m'affiche un <br> (???).
Voyez sur: http://txiki.free.fr/ il n'y a pas de value mais ça m'afficherai un <br> si je le mettais.
Un sérieux coup de main me serait bien utile.
Je peux vous poster un morceau de code, voire plus si nécessaire.
Merci infiniment pour votre patience. C'est très IMPORTANT pour moi ce truc que je suis en train de faire.

A voir également:

15 réponses

jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
14 févr. 2007 à 07:56
Bonjour,

Tu as créé une table. OK

Ensuite tu as du faire un insert ?

Si tu l'as fait :

Soit il s'est déroulé correctement et les données sont dans la table.

Soit il y a eu un code d'erreur et les données n'y sont pas.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
14 févr. 2007 à 08:08
Salut jlfond,
Ben justement non, on en est pas encore à l'insert mais en cliquant sur le lien d'un des logiciels, on devrait tomber sur une page avec les champs Nom: , Editeur: et comment: renseignés.
Or, ces champs sont vides.
Je pensais que le fait de cliquer sur un lien Editer, la page correspondante s'afficherait car dans le select j'y inclu l'id (même s'il n'apparaît pas dans cette seconde page).
Bouh! je ne sais pas si je suis très clair dans mes explications....
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
14 févr. 2007 à 08:13
Mais tu es ou là.

Sur l'interface phpadmin ?

Ou est ce bouton 'éditer' ?

Quel produit tu utilises ?
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
14 févr. 2007 à 12:40
Salut jlfond,
Non, non ! le lien Editer se trouve sur le tableau quand tu clique sur catalogue (http://txiki.free.fr ) .
Chaque logiciel a un lien Editer et Supprimer.
Ils marchent bien tous les deux sauf qu'ils sont vides (pour le moment il n'y a que 3 champs mais à terme il y en aura 23, la fiche complète quoi!.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
14 févr. 2007 à 13:07
OK, j'ai essayé d'éditer un logiciel.

J'ai rempli les 3 champs et j'ai cliqué sur Envoyer.

Je suis arrivé sur la page
[h**p://txiki.free.fr/insert.php]

Et j'ai eu le message d'erreur
Impossible de se connecter à MySQL

Quel est ton code pour te connecter au serveur mysql

Je te mets une fonction que j'ai pris dans un de mes soft :

function dtb_connection(){

$the_mysql_server = VEP_SQL_SERVER ;
$the_mysql_user = VEP_SQL_USER;
$the_mysql_password = VEP_SQL_PASSWORD;
$the_mysql_database = VEP_SQL_DATABASE;

if ( $base = mysql_connect($the_mysql_server,$the_mysql_user,$the_mysql_password)) {
mysql_select_db($the_mysql_database,$base);
}
}
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
14 févr. 2007 à 15:03
OK ! je crois que j'ai oublié de mettre le user et le pass (obligatoire chez free). Avec un htaccess et un fichier de passwords (liste de plusieurs personnes autorisées) ça ne fonctionne pas.
Coome pour le faire tourner en local avec easyphp je suis obligé de mettre root et '' (2 ')(pas de pass) j'oublie de renseigner ces 2 trucs avant d'uploader.
Mais en local ça fonctionne.
Tu vois, le Pb, c'est bien celui là: en cliquant sur un Editer tu aurais du tomber sur cette page mais renseignée or, tu a du remplir les champs puis soumettre (on arrive bien a insert.php) mais c'est pour un ajout d'enregistrement.
0

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

Posez votre question
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
14 févr. 2007 à 15:31
Pour l'instant c'est peut être pas la peine de mettre un .htaccess.

Il faut d'abord que ca marche.

Ensuite tu protègeras avec un htaccess.

Un problème après l'autre...
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
14 févr. 2007 à 16:47
Tout à fait d'accord mais si j'en ai parlé, c'est parcequ'a chaque fois, avant d'uploader, j'oublie de modifier ces parametres pour qu'il soit accessible sur txiki. Pour que vous voyez...
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
14 févr. 2007 à 22:16
Bonsoir GALEEEEERE !
Je m'arrache les cheveux maintenant :-(((( arrrrg !

Je n'arrive plus a faire un tableau propre comme je l'avais fait (j'ai supprimé une ligne en fusionnant les 2 cellules de gauche (Editer et Supprimer.

1er exemple de ce que je devrais avoir: http://txiki.free.fr/tableau_logiciels.gif
2eme exemple (2 lignes mais plus de couleurs et désordonné en plus:
http://txiki.free.fr/tableau_logiciels_2.gif

Le code (fichier txt:
http://txiki.free.fr/liste.txt

Et tout ça parceque je veux limiter le nombre d'affichage a 10 ou 15 enregistrements par écran.

Bon, je viens de me rendre compte que free n'affiche pas le tableau comme easyphp chez moi. ( ? ? ? )

Depuis 2/3 jous, j'ai un comprtement bizarre avec Dream. Me reste plus qu'a le ré-installer. On verra demain.

Mais déjà, si quelqu'un pouvais m'analyser le code.... ce serait déjà SUPER.
Me dire ce qui ne va pas, les erreurs de syntaxe (ah ça, la syntaxe, c'est vraiment pas ma tasse de thé !

Bonne soirée et merci d'avance.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
15 févr. 2007 à 08:00
Bonjour,

Le code est difficile à lire du coup les erreurs sont plus difficile à voir.

Par exemple cette ligne il manque un " après le 50%


echo '<table width="50% bgcolor=\"#FFFFFF\" align=\"center\">'."\n";


Tu dois utiliser autrement les " et les '

Mets les " à l'extérieur et ca donne ca

echo "<table width='50%' bgcolor='#FFFFFF' align='center'>\n";

C'est quand même plus digeste.


(ah ça, la syntaxe, c'est vraiment pas ma tasse de thé !

Il va quand même falloir que tu y passes.

Si c'est pas pareil chez free que chez toi choisi free et reste y pour l'instant.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
15 févr. 2007 à 09:44
Merci jlfond,
Merci pour la double cote oubliée (hi hi hi).
Si j'aimis le fichier au format texte sur txiki c'était surtout pour ne pas surcharger ici en mode code (mais cela serait plus simple pour corriger effectivement...).

Ensuite le système des \" pour les valeurs, c'était comme ça sur le modèle alors je l'ai laissé mais effectivement c'est pas propre, et pas ma façon de faire non plus.

De toutes façons, je dois ré-installer Dreamweaver car lorsque j'écris ou supprime des portions de code il me modifie des choses ailleurs (et je ne m'en rends compte qu'en mode visualisation, même si je corrige, c'est du temps perdu pour rien).

C'est con! sur le modèle sans limitation d'affichage, j'avais réussi a utiliser le formulaire Editer ( pour ajouter des datas via insert.php)
avec le message correspondant (en vert=OK, en rouge=Pb).

Je ne remplissait pas les champs mais ils étaient vides alors qu'ils auraient du contenir les valeurs de la ligne du Editer grace à l'id. (???)
Je reprendrais ça ce soir.

Merci infiniment en tous cas pour ton aide précieuse.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
17 févr. 2007 à 16:02
Salut à tous,
Grace à jlfond j'ai corrigé la syntaxe pour l'affichage du tableau. Un grand merci à lui ;-)).
Seulement, j'ai d'autres Pb qui sont apparu (mais pas les mêmes que sur le site ci-dessous.
http://txiki.free.fr/liste.php

ci-dessous le titre du tableau et la première ligne s'affiche correctement (même si on ne le voit pas ici)....
. '. '.
Accès Logiciels

Notice: Undefined variable: ID in g:\sites web\txiki\liste.php on line 96

Editer

Notice: Undefined variable: ID in g:\sites web\txiki\liste.php on line 97
supprimer
Nom du logiciel: Suite MISSLER (TOPCAM, TOPSOLID, TOPTOOL), TOPCAM 3D
Editeur du logiciel: Missler
'.
*********************************
à partir d'ici, les erreurs s'ffichent en texte normal, pas dans le tableau.
*********************************

Notice: Undefined variable: ID in g:\sites web\txiki\liste.php on line 96

Editer

Notice: Undefined variable: ID in g:\sites web\txiki\liste.php on line 97
supprimer

voici les le code:
echo "<tr>";
  echo "<td rowspan='2'  bgcolor='#FF9900' align='center' width='10%'>"; // largeur de la première colonne (fusion de 2 lignes) 
  // ligne 96
echo "<p><a href='fiche.php?id=$ID'> Editer </a><br>"; // <br> pour 1 interligne moins important entre les 2 liens
 // ligne 97
 echo "<a href='delete.php?id=$ID'> supprimer </a></p>";
  echo "</td>";
  echo "<td bgcolor='#F0F0F0'><strong> Nom du logiciel: </strong>".$row['nom']."</td>"; // affiche le nom du logiciel 1ère à droite
  echo "</td>";
  echo "</tr>'.\n";
  echo "<tr>";
  echo "<td bgcolor='#F0F0F0'><strong> Editeur du logiciel: </strong>".$row['editeur']."</td>"; // affiche l'éditeur du logiciel 2ème à droite
  echo "</td>";
  echo "</tr>'.\n";

Si quelqu'un pouvait me dépanner, ce serait SUPER cool !
ça vient. doucement, mais vient !
Merci.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
17 févr. 2007 à 18:19
Bonjour txiki,

Si l'interpréteur php te dis qu'elle n'est pas définie c'est qu'au moment ou tu fais l'echo tu n'as pas encore affectée une valeur à ID.

Il me semble que c'est une simple notification. Pas une erreur.

Tu dois donc avoir tes deux liens qui s'affichent, mais pas comme tu le voudrais.

Il faut regarder plus haut dans le code ...

Je n'arrive pas à me connecter sur tes pages..

Ha si maintenant oui. Apparremment tu travvailles dessus.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
17 févr. 2007 à 19:04
Salut jlfond,
Exact: c'est une notification.
Notice: Undefined variable: id in g:\sites web\txiki\liste.php on line 96

Ca marche grace a toi mais le Pb vient des 2 echo contenant un lien justement. Est-ce un hasard ou une mauvaise syntaxe. La voici la fameuse ligne:
echo "<p><a href='fiche.php?id=$id'> Editer </a><br>"; // <br> pour 1 interligne moins important entre les 2 liens


çan s'approche mais mais en local j'ai seulement le titre puis la première ligne qui s'affiche dans un tableau. Le reste, se trouve à gauche, toujours les notify....

Si seulement tu pouvais voir ce qui cloche ! qu'est-ce que je serais HEUREUX ! avant de passer au reste.
PS: en cliquant sur le premier Editer, je tombe bien sur un formulaire (editer.php) avec tous les 3 champs.

Mais impossible de se connecter à la base ? ? ? ?
En tous cas merci encore pour ta patience ! ;-)))

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
17 févr. 2007 à 19:24
Non il n'y a pas d'erreur de syntaxe là.

Le probléme n'est pas sur les echo.

Il faut voir ou tu récupères cette variable $id.

Et il semble que tu ne la récupère pas car elle serait affectée.

Cherche et liste moi les lignes de code ou elle se trouve.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
18 févr. 2007 à 12:42
Salut jlfond et pardon pour le retard (invitation chez amis oblige !!!)

Bon, j'ai remplacé 'editer.php?link=$link' dans echo pensant qu'il récupérerait le bon id (celui correspondant à la ligne) mais il n'en est rien.
Ci-dessous, le script complet de liste.php. Editer pointe vers $link.
Un bon point cependant, on n'affiche bien les 10 premières lignes de la liste + les liens en dessous pour naviguer sur le reste de la liste.
Sauf que ces liens ne fonctionnent pas (???)
Pourrait-tu, STP, me regarder ce code et m'indiquer où se trouve le Pb ?

Merci mille fois ! http://txiki.free.fr/
PS: si tu veux, je peut te mettre le fichier fonctions.php qui regroupe 3 fonctions php.
Remarque, c'est peut-etre là que se trouve le Pb ?

<?
//=========================================
// includes du fichier fonctions
//=========================================

require 'fonctions.php';

//=========================================
// information pour la connection à la DB
//=========================================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';

//=========================================
// initialisation des variables 
//=========================================

$nombre = 10;  // on va afficher 10 résultats par page.
$limite = 0;
if (!$limite);  // si limite n'existe pas on l'initialise à zéro

$path_parts = pathinfo($_SERVER['PHP_SELF']);  // on cherche le nom de la page.

$page = $path_parts["basename"];

//======================
// connection à la base
// =====================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
$delete = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 

// ======================
// sélection de la table
// ======================
mysql_select_db($db) or die ('Impossible de trouver la base: celle-ci a été supprimée, renomée ou déplacée'); 

//==========================================================================    
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================

$select = 'SELECT count(id) FROM test';

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$total = $row[0];

//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);

// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)  {

    $limite = 0;
}

//===================================================================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//===================================================================================

$select = 'select id,nom,editeur FROM test ORDER BY id ASC limit '.$limite.','.$nombre;

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

//==============================================    
// si on a récupéré un resultat on l'affiche.
//==============================================

if($total) {
 echo "<table width='70%' bgcolor='#FFFFFF' align='center'>\n";

// première ligne on affiche les titres du tableau sur 2 colonnes
        echo "<tr text-align='center' padding='3px' class='blanc'>";
        echo "<td bgcolor='#669999'><h2> Action </h2></td>";
        echo "<td bgcolor='#669999'><h2> Logiciels </h2></td>";
        echo "</tr>.\n";

// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.    
    while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td rowspan='2'  bgcolor='#FF9900' align='center' width='10%'>"; // largeur de la première colonne (fusion de 2 lignes) 
  echo "<p><a href='editer.php?link=$link'> Editer </a><br>"; // <br> pour 1 interligne moins important entre les 2 liens
  echo "<a href='delete.php?delete=$delete'> supprimer </a></p>";
  echo "</td>";
  echo "<td bgcolor='#F0F0F0'><strong> Nom du logiciel: </strong>".$row['nom']."</td>"; // affiche le nom du logiciel 1ère à droite
  echo "</td>";
  echo "</tr>.\n";
  echo "<tr>";
  echo "<td bgcolor='#F0F0F0'><strong> Editeur du logiciel: </strong>".$row['editeur']."</td>"; // affiche l'éditeur du logiciel 2ème à droite
  echo "</td>";
  echo "</tr>.\n";
  echo "</table>.\n";
    // fin du tableau.
 }
}
else echo "Pas d\'enregistrements dans cette table";

// on libère le résultat
mysql_free_result($result);

//======================================================================    
// si le nombre d'enregistrement à afficher est plus grand que $nombre 
//======================================================================

if($total > $nombre) {

    affichePages($nombre,$page,$total);  // affichage des liens vers les pages

    displayNextPreviousButtons($limite,$total,$nombre,$page);  // affichage des boutons
}
mysql_close();
?>



Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
18 févr. 2007 à 14:25
Bonjour txiki,

Concernant l'id

-------------
$select = 'select id,nom,editeur FROM test ORDER BY id ASC limit '.$limite.','.$nombre;

$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

Là il manque la récupération des champs et de l'id en question.
list($id,$nom,$editeur) = mysql_fetch_row($result);
-------------

J'ai pas regardé plus mais ca déjà ca manque.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
18 févr. 2007 à 15:56
Bonjour jlfond,
Encore moi :-((

Là il manque la récupération des champs et de l'id en question.
list($id,$nom,$editeur) = mysql_fetch_row($result); 

Oui mais je la met où cette ligne ?

Désolé mais je suis un peu dur à la comprendure.....

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
18 févr. 2007 à 16:48
OUPS ! ! !
la suite (sous forme de formulaire)
    <h1> Fiche complète du logiciel </h1>
    
    <h3 class="vert"><strong> Vous pouvez maintenant modifier une ou des informations ci-dessous </strong></h3>
    <p>&nbsp;</p>
    <form METHOD="POST" ACTION="editer-verif.php">
      <input TYPE="hidden" name="id" value="<? echo mysql_query($query="id") ?>">
      <p> Nom du logiciel: <input TYPE="text" name="nom" value="<? echo mysql_query($query="nom") ?>" SIZE="50"></p>
      <p> Editeur: <input TYPE="text" name="editeur" VALUE="<? echo mysql_query($query="editeur") ?>" SIZE="50"></p>
      <p>Votre commentaire: <input TYPE="text" name="comment" VALUE="<? echo mysql_query($query="comment") ?>" SIZE="50"></p>
      <p>
      <input TYPE="submit" VALUE="mettre à jour">
      </p>
  </form>

0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
18 févr. 2007 à 17:27
Autant pour moi je n'avais pas vu qu'il y avait un

$row = mysql_fetch_array($result))

en dessous dans une boucle.
Laisse tomber cette ligne.

Qu'est ce que c'est que ces deux connexions au serveur

//======================
// connection à la base
// =====================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
$delete = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );

Tu devrais avoir ca, dans ton cas.
-----------------------
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';

$link = mysql_connect ($host,$user,$pass);
mysql_select_db($db,$link);
----------------------------

Ces variables $link est $delete n'ont rien à faire plus bas dans les liens. Il y avait les ID. Remets les et fait moi un listing propre. Je ne sais plus ou tu en es.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
18 févr. 2007 à 18:00
Salut jlfond et merci encore,
J'ai remis les id mais j'obtiens des notices maintenant.
Notice: Undefined variable: id in g:\sites web\txiki\liste.php on line 83 or la ligne 83 c'est justement celle des liens Editer et l'autre delete Notice: Undefined variable: id in g:\sites web\txiki\liste.php on line 84.
<?
//=========================================
// includes du fichier fonctions
//=========================================

require 'fonctions.php';

//=========================================
// information pour la connection à la DB
//=========================================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';

$link = mysql_connect ($host,$user,$pass);
mysql_select_db($db,$link) or die ('Impossible de trouver la base: celle-ci a été supprimée, renomée ou déplacée');
//=========================================
// initialisation des variables 
//=========================================

$nombre = 10;  // on va afficher 10 résultats par page.
$limite = 0;
if (!$limite);  // si limite n'existe pas on l'initialise à zéro

$path_parts = pathinfo($_SERVER['PHP_SELF']);  // on cherche le nom de la page.

$page = $path_parts["basename"];

//==========================================================================    
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================

$select = 'SELECT count(id) FROM test';

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$total = $row[0];

//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);

// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)  {

    $limite = 0;
}

//===================================================================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//===================================================================================
$select = 'select id,nom,editeur FROM test ORDER BY id ASC limit '.$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
//==============================================    
// si on a récupéré un resultat on l'affiche.
//==============================================
if($total) {
 echo "<table width='70%' bgcolor='#FFFFFF' align='center'>\n";

// première ligne on affiche les titres du tableau sur 2 colonnes
        echo "<tr text-align='center' padding='3px' class='blanc'>";
        echo "<td bgcolor='#669999'><h2> Action </h2></td>";
        echo "<td bgcolor='#669999'><h2> Logiciels </h2></td>";
        echo "</tr>.\n";

// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.    
    while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td rowspan='2'  bgcolor='#FF9900' align='center' width='10%'>"; // largeur de la première colonne (fusion de 2 lignes) 
  echo "<p><a href='editer.php?id=$id'> Editer </a><br>"; // <br> pour 1 interligne moins important entre les 2 liens
  echo "<a href='delete.php?id=$id'> supprimer </a></p>";
  echo "</td>";
  echo "<td bgcolor='#F0F0F0'><strong> Nom du logiciel: </strong>".$row['nom']."</td>"; // affiche le nom du logiciel 1ère à droite
  echo "</td>";
  echo "</tr>.\n";
  echo "<tr>";
  echo "<td bgcolor='#F0F0F0'><strong> Editeur du logiciel: </strong>".$row['editeur']."</td>"; // affiche l'éditeur du logiciel 2ème à droite
  echo "</td>";
  echo "</tr>.\n";
  echo "</table>.\n";
    // fin du tableau.
 }
}
else echo "Pas d\'enregistrements dans cette table";

// on libère le résultat
mysql_free_result($result);

//======================================================================    
// si le nombre d'enregistrement à afficher est plus grand que $nombre 
//======================================================================

if($total > $nombre) {

    affichePages($nombre,$page,$total);  // affichage des liens vers les pages

    displayNextPreviousButtons($limite,$total,$nombre,$page);  // affichage des boutons
}
mysql_close();
?>

Bouuuuuh ! j'espère hardament que ça finisse par fonctionner.
Merci encore pour ta sacré patience ! Je ne le dirais jamais assez.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
18 févr. 2007 à 18:16
OK, mais je préfère ca.

Maintenant tu vas changer le code de la boucle while
while($row = mysql_fetch_array($result))

C'est là qu'il faut récupérer les champs.

while( list($id,$nom,$editeur) = mysql_fetch_row($result))

Met ca et refait un listing. Ca doit marcher là.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
18 févr. 2007 à 18:21
Remplace aussi

echo "<td bgcolor='#F0F0F0'><strong> Nom du logiciel: </strong>".$row['nom']."</td>";

Par

echo "<td bgcolor='#F0F0F0'><strong> Nom du logiciel: </strong>$nom</td>";

et

echo "<td bgcolor='#F0F0F0'><strong> Editeur du logiciel: </strong>".$row['editeur']."</td>";

par

echo "<td bgcolor='#F0F0F0'><strong> Editeur du logiciel: </strong>$editeur</td>";

Voilà là c'est bon..
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
19 févr. 2007 à 02:02
Salut jlfond,
Bon ! maintenant j'ai un tableau correct. Tes corrections ne fonctionnaient pas du tout et voici mon code actuel pour la liste:
<?
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';

//=========================================
// information pour la connection à le DB
//=========================================
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';

//=========================================
// initialisation des variables 
//=========================================
$nombre = 10;  // on va afficher 10 résultats par page.
$limite = 0;
if (!$limite);  // si limite n'existe pas on l'initialise à zéro

$path_parts = pathinfo($_SERVER['PHP_SELF']);  // on cherche le nom de la page.

$page = $path_parts["basename"];

//======================
// connection à la DB
//======================
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db($db) or die ('Impossible de se connecter à la base'); // sélection de la table

//==========================================================================    
// requête SQL qui compte le nombre total d'enregistrements dans la table.
//==========================================================================
$select = 'SELECT count(id) FROM test';

$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

$row = mysql_fetch_row($result);

$total = $row[0];

//===================================================
// vérifier la validité de notre variable $limite;
//===================================================
$verifLimite = verifLimite($limite,$total,$nombre);

// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite)  {

    $limite = 0;
}

//======================================================================================
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
//======================================================================================

$select = 'select nom,editeur,comment FROM test ORDER BY id ASC limit '.$limite.','.$nombre;

$result = mysql_query($select)  or die ('Erreur : '.mysql_error() );


//=============================================    
// si on a récupéré un resultat on l'affiche.
//=============================================

if($total) {
  echo "<table width='70%' bgcolor='#FFFFFF' border='1' cellspacing='0' cellpadding='4' align='center'>\n";
// première ligne on affiche les titres Accès et Logiciels dans 2 colonnes
        echo "<tr text-align='center' padding='3px' class='blanc'>";
        echo "<td bgcolor='#669999'><h2> Action </h2></td>";
        echo "<td bgcolor='#669999'><h2> Logiciels </h2></td>";
        echo "</tr>.\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par lot de 3 lignes.    
    while($row = mysql_fetch_array($result)) {
  echo "<tr>";
  echo "<td rowspan='2'  bgcolor='#FF9900' align='center' width='10%'>"; // largeur de la première colonne (fusion de 3 lignes)
  echo "<p><a href='editer.php?id=['id']'> Editer </a></p>"; // <P> pour 1 saut plus important entre les 2 liens
  echo "<p><a href='delete.php?id=['id']'> supprimer </a></p>";
  echo "</td>";
  echo "<td bgcolor='#F0F0F0'><strong> Nom du logiciel: </strong>".$row['nom']."</td>"; // affiche le nom du logiciel (1ere cellule)
  echo "</td>";
  echo "</tr>'.\n";
  echo "<tr>";
  echo "<td bgcolor='#F0F0F0'><strong> Editeur du logiciel: </strong>".$row['editeur']."</td>"; // affiche l'éditeur du logiciel (la 2eme cellule)
  echo "</td>";
  echo "</tr>\n";
 }
  echo "</table>\n";
    // fin du tableau.
}
else echo "Pas d\'enregistrements dans cette table";

// on libère le résultat
mysql_free_result($result);

//========================================================================    
// si le nombre d'enregistrement à afficher est plus grand que $nombre 
//========================================================================
if($total > $nombre) {

    affichePages($nombre,$page,$total);  // affichage des liens vers les pages

    displayNextPreviousButtons($limite,$total,$nombre,$page);  // affichage des boutons
}
?>
J'ai plein de points (.) et ' qui se balladent sur la page m'enfin (je ne vois pas d'où ils viennent). Voir sur http://txiki.free.fr
Maintenant il faut que je fasse fonctionner ces boutons suivant et précédent ET les n° de pages.

J'ai un fichier "fonctions.php" dont le code suit:
<?
// =================================================================================
// fonction qui affiche boutons Précédent  Suivant
// =================================================================================
function displayNextPreviousButtons($limite,$total,$nb,$page) { 
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo  "<table><tr>.\n";
if($limite != 0) {
        echo  "<td valign='top'>.\n";
        echo  "<form action=".$page." method='post'>.\n";
        echo  "<input type='submit' value='précédente'>.\n";
        echo  "<input type='hidden' value=".$limitePrecedente." name='limite'>.\n";
        echo  "</form>.\n";
        echo  "</td>.\n";
}
if($limiteSuivante < $total) {
        echo  "<td valign='top'>.\n";
        echo  "<form action=".$page." method='post'>.\n";
        echo  "<input type='submit' value='suivante'>.\n";
        echo  "<input type='hidden' value=".$limiteSuivante." name='limite'>.\n";
        echo  "</form>.\n";
        echo  "</td>.\n";
            
}
echo  "</tr></table>.\n";
}

// =========================================================================================
// fonction qui affiche les liens vers les pages
//==========================================================================================
function affichePages($nb,$page,$total) { 
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo "<table border = '0' ><tr>.\n";
        while($numeroPages <= $nbpages) {
        echo "<td><a href = ".$page.'?limite='.$limite.'>'.$numeroPages."</a></td>.\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo "<br>.\n";
            }
        }
        echo "</tr></table>.\n";
}
// =================================================================================
//récupération de $limite
// =================================================================================
    if(isset($_POST['limite']))

        $limite=$_POST['limite'];
    else   $limite=0;

// ================================================================================
function verifLimite($limite,$total,$nombre) {

    // je verifie si limite est un nombre.
    if(is_numeric($limite)) {
        
// si $limite est entre 0 et $total, $limite est ok sinon $limite n'est pas valide.

        if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {

            // j'assigne 1 à $valide si $limite est entre 0 et $max
            $valide = 1;
        }    
        else {
            // sinon j'assigne 0 à $valide
            $valide = 0;
        }
    }
    else {
            // si $limite n'est pas numérique j'assigne 0 à $valide
            $valide = 0;
    }
// je renvois $valide
return $valide;
}
?>

Si quelqu'un d'habitué a ce genre de chose (écriture des fonctions spécifique en php pouvait me regarder cette seconde partie.... ce serait HYPER cool !

Merci d'avance.
0
jlfond Messages postés 230 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 19 juin 2020 28
19 févr. 2007 à 07:20
Comment ça marche pas du tout ?

Tu es sur d'avoir bien mis ce que je t'ai donné c'est un mysql_fetch_row à la pace d'un mysql_fetch_array pour extraire les champs.

(Les deux sont possible mais c'est plus lisible comme je te l'ai indiqué. Je suis sur de mon affaire !!).

Ton code tel que je le lis là. Pour moi il ne peut pas fonctionné correctement.L 'id ci dessous n'a pas de valeur.

echo "<p><a href='editer.php?id=['id']'> Editer </a></p>";

Met au moins un $row['id'] avec la même construction pour l'echo que tu utilises pour les autres echo !!
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
19 févr. 2007 à 07:28
Salut jlfond !
Maintenant que tu me dit ça..... pourtant j'ai fait un copier/coller de ta correction.....

Bon, je vais regarder ce soir à la maison car au bureau je n'ai rien. Les tests je les fait à la maison.
Je vais revoir tout ce que tu me dis... ;-)
Bonne journée !
0